当前位置:首页 > 单片机 > 单片机
[导读] ;******************;; 定时器程序 ;; 采用89c2051 ;;******************;; ;****************** ; 伪定义 ; ;****************** SL EQU 30H ;SL存放秒的个位数 SH EQU 31H ;SH存放秒的十位数 ML EQ

;******************;
; 定时器程序 ;
; 采用89c2051 ;

;******************;
;
;******************
; 伪定义 ;
;******************
SL EQU 30H ;SL存放秒的个位数
SH EQU 31H ;SH存放秒的十位数
ML EQU 32H ;ML存放分的个位数
MH EQU 33H ;MH存放分的十位数
HL EQU 34H ;HL存放时的个位数
HH EQU 35H ;HH存放时的十位数
;
L0 EQU 36H ;L0~L3:显示数据存储器
L1 EQU 37H
L2 EQU 38H
L3 EQU 39H
DSPLYP EQU 3AH ;显示数据指针(DISPLAY-POINT)
PLYTS EQU 3BH ;显示次数计数器(DISPLAY-TIMES)
;
LPLMOD BIT 39H ;低两位显示方式(LOW-PLAY-MOD)
HPLMOD BIT 3AH ;高两位显示方式(HIGH-PLAY-MOD)
BRIGHT BIT 3BH ;DISPLAY子程序参数:亮灭指示位
;
TCOUNT EQU 3CH ;时间计数器(TIME-COUNT)
;
ADDRES EQU 3DH ;加1子程序参数
MAX EQU 3EH ;加1子程序参数
IFDEC BIT 20H ;BCD加法子程序参数
;
R_MOD EQU 3FH ;响铃方式参数
;
LED4 BIT 30H ;发光管状态位
BELL BIT P1.7 ;蜂鸣器
SWITCH BIT P3.7 ;继电器
FKEY BIT P3.0 ;功能键 (S1)
MKEY BIT P3.1 ;修改键 (S2)
;
WORKIN BIT 38H ;工作状态指示位
;

;******************
; 中断入口 ;
;******************
ORG 0000H
START: LJMP MAIN ; 0000H 引向主程序
LJMP ERR ; 0003H
NOP
NOP
LJMP ERR ;引向出错处理程序
LJMP PGT0 ; 000BH引向中断处理程序PGT0
NOP
NOP
LJMP ERR ; 引向出错处理程序
LJMP ERR ; 0013H INT1
NOP
NOP
LJMP ERR
LJMP ERR ; 001BH T1
NOP
NOP
LJMP ERR
LJMP ERR ; 0023H
NOP
NOP
LJMP ERR
LJMP ERR ; 002BH
NOP
NOP
;
;************
;主程序 ;
;************
MAIN: MOV IE, #00H ;关中断
MOV SP, #57H ;设置堆栈指针
MOV PSW, #00H ;选用寄存器组0
MOV TMOD, #11H ;设定中断工作方式为T0和T1
;
MOV A, 56H
CJNE A, #0AAH, CSTART ;判上电复位标志,无标志转冷启动
MOV A, 57H
CJNE A, #55H, CSTART ;无标志转冷启动
AJMP HSTART ;有上电复位标志转热启动
NOP
NOP
LJMP ERR ;软件陷阱,引向出错处理程序
CSTART: MOV P1, #0FFH ;冷启动,全面初始化
MOV P3, #0FFH
MOV TCON, #00H ;计时停止
MOV TL0, #0B0H ;赋中断T0初值
MOV TH0, #3CH
MOV TCOUNT, #0AH ;赋定时器初值
MOV R5, #00H ;R5为一空单元(备用)
MOV R4, #00H ; R4 为工作模式选择寄存器
MOV SL, #00H ;定时单元清零
MOV SH, #00H ;秒
MOV ML, #00H ;
MOV MH, #00H ;分
MOV HL, #00H ;
MOV HH, #00H ;时
MOV PLYTS, #64H ;赋显示次数初值为100次
MOV DSPLYP, #L0;显示指针指向显存单元
MOV L0, #0AH ;送显示数据"-----"
MOV L1, #0AH
MOV L2, #0AH
MOV L3, #04H
SETB LED4 ;LED4为数码管之间的发光二极管
SETB LPLMOD ;设定显示方式为闪烁
SETB HPLMOD ;
SETB BRIGHT ;允许显示
CLR WORKIN ;清工作标志 , 待命
AJMP SETUP ;转开始工作
NOP
NOP
LJMP ERR ;软件陷阱
HSTART: MOV SCON, #00H ;有上电标志,热启动,清串行口控制寄存器
MOV IP, #00H ;清中断优先控制寄存器
SETB FKEY ;重设按键
SETB MKEY
SETB EA ;开中断
AJMP BEGIN ;转向继续工作
NOP
NOP
LJMP ERR ;软件陷阱
SETUP: SETB EA ;开中断
;
MAIN1: ACALL DISPLY ;调用显示
JB FKEY, JUDGE ;按键扫描
ACALL KEYDLY ;延时消抖动
JB FKEY, JUDGE ;无键按下转向判断是否到点
CLR ET0 ;功能键被按下,则
CLR TR0 ;暂停计时
ACALL MENU ;调用菜单设置程序
BEGIN: SETB WORKIN ;置工作标志位,开始工作
SETB ET0 ;开中断
SETB TR0 ;开始计时
MOV A, R4 ;移入工作模式选择
RL A ;指针放大
MOV DPTR, #M_TAB
JMP @A+DPTR ;根据工作模式跳转到相应程序段
M_TAB: AJMP WORK1
AJMP WORK2
AJMP WORK3
AJMP WORK4
NOP
NOP
LJMP ERR ;软件陷阱
WORK1: ;
WORK2: CLR SWITCH ;工作方式1和2:开继电器
AJMP MAIN2
NOP
NOP
LJMP ERR ;软件陷阱
WORK3: ;
WORK4: SETB SWITCH ;工作方式3和4:不开继电器
MAIN2: CLR BELL ;蜂鸣器短鸣一声,以示开始工作
ACALL DL05S
SETB BELL
JUDGE: JNB WORKIN, MAIN1 ;判断是否在定时之中
MOV A, SL ;判断秒是否为零
JNZ MAIN1
MOV A, SH ;判断秒是否为零
JNZ MAIN1
MOV A, ML ;判断分是否为零
JNZ MAIN1
MOV A, MH ;判断分是否为零
JNZ MAIN1
MOV A, HL ;判断时是否为零
JNZ MAIN1
MOV A, HH ;判断时是否为零
JNZ MAIN1 ;若时分秒全为零则
CLR ET0 ;停止计时
CLR TR0 ;
ACALL ACTION ;调用到点工作子程序
AJMP MAIN ;返回
NOP
NOP
LJMP ERR ;软件陷阱
;
;******************
;倒计时程序 ;
;******************
PGT0: CLR EA ;关中断
PUSH ACC ;保护现场
PUSH PSW
PUSH DPL
PUSH DPH
MOV PSW, #08H ;选用寄存器组1
CLR TR0 ;暂停计时
MOV A,#0B7H ;中断同步修正
ADD A,TL0
MOV TL0,A
MOV A,#3CH
ADD A,TH0
MOV TH0,A
SETB TR0 ;恢复计时
DEC TCOUNT ;定时器T0每50 000毫秒溢出一次,则
MOV A, TCOUNT ;溢出10次为0.5秒
JNZ OUTT0 ;判断是否到半秒
MOV TCOUNT, #0AH ;
CPL LED4 ;若到半秒LED取反
JNB LED4, OUTT0 ;LED每闪烁一次是一秒
MOV R0, #SH ;移入秒位的地址
SETB IFDEC ;BCD子程序参数,使其做减法
ACALL ADDBCD ;调用BCD子程序, 秒减1
CJNE R3, #99H, OUTT0 ;判断秒要否借位
MOV SH, #05H ;要借位则
MOV SL, #09H ;送数据59(否则显示99)
MOV R0, #MH ;移入分位的地址
ACALL ADDBCD ;分减1
CJNE R3, #99H, OUTT0 ;判断分要否借位
MOV MH, #05H
MOV ML, #09H
MOV R0, #HH
ACALL ADDBCD
OUTT0: POP DPH ;恢复现场
POP DPL
POP PSW
POP ACC
SETB EA
RETI ;中断返回
NOP
NOP
LJMP ERR ;软件陷阱
;
;
;**************************
; BCD子程序(加1或减1 ) ;
;**************************
ADDBCD: MOV A, @R0 ;移入被操作数的高位
DEC R0 ;指针减一
SWAP A
ORL A, @R0 ;移入被操作数的低位
MOV B, #01H ;B寄存器送立即数#01H
MOV C, IFDEC ;若 减法标志位为1,则
MOV B.3, C ;
MOV B.4, C ; B寄存器的值被改为#99H
MOV B.7, C ;
ADD A, B ; 对一个压缩的BCD码加#99H等于对其减一
DA A ;BCD码调整
MOV R3, A ;暂存结果
ANL A, #0FH ;取低位码
MOV @R0, A ;存数
MOV A, R3 ;取回结果
INC R0 ;指针加一
SWAP A ;交换
ANL A, #0FH ;取结果数的高位
MOV @R0, A ;存数
RET
NOP
NOP
LJMP ERR ;软件陷阱
;
;**************
;加1程序 ;
;**************
ADDONE: MOV R0, ADDRES ;移入被加数单元的地址
CLR IFDEC ;设定BCD子程序做加法
ACALL ADDBCD ;调用BCD子程序
CLR C ;判断被加数是否大于
MOV A, R3 ;最大值"MAX"
CJNE A, MAX, JGOVER
JGOVER: JC ENDADO
CLR A ;若大于"MAX",则清零
MOV @R0, A
DEC R0
MOV @R0, A
ENDADO: RET
NOP
NOP
LJMP ERR ;软件陷阱
;
;******************
;调时快进程序 ;
;******************
QUICK: CLR LPLMOD ;设定显示方式不闪烁
CLR HPLMOD
ACALL ADDONE ;调用加1子程序
MOV L0, R4 ;将工作模式选择数移入显存
INC L0 ;加1转化成显示值
ACALL KEYDLY ;延时
ACALL DL100
JNB MKEY, QUICK ;判断键是否松开
SETB LPLMOD ;若松开则恢复闪烁显示方式
CJNE R6, #02H, ENDQUK
SETB HPLMOD
CLR LPLMOD
ENDQUK: RET
NOP
NOP
LJMP ERR ;软件陷阱
;
;
;******************
;功能菜单程序 ;
;******************
MENU: MOV R6, #00H ; 初始化; R6 计功能键按键次数
MOV ADDRES, #05H ;将 R5 的地址送入,以便于改变 R4 的值
MOV MAX, #04H ;定义工作模式选择寄存器R4 的最大值
MOV DSPLYP, #L0 ;定义显示指针指向显存
SETB LPLMOD ;设定低两位数闪烁
CLR HPLMOD
MOV L0, R4 ;送显示数据"F-0X"
INC L0
MOV L1, #00H
MOV L2, #0BH
MOV L3, #00H
SETB LED4
;
WAITFK: ACALL DISPLY ;等待F键释放
JNB FKEY, WAITFK
MENU1: ACALL DISPLY
JB MKEY, JGFKEY ;M键扫描
ACALL KEYDLY ;延时消抖动
JB MKEY, JGFKEY ;未按下则转F键扫描
CJNE R6, #00H, NEXT1 ;
MOV SL, #00H ;若中途改变定时方式,则清除原计时数据
MOV SH, #00H
MOV ML, #00H
MOV MH, #00H
MOV HL, #00H
MOV HH, #00H
NEXT1: MOV R2, #00H ;R2用于判断按键时间是否超过0.5秒
NEXT2: ACALL ADDONE ;调用加1程序
MOV L0, R4 ;移入工作方式选择数
INC L0
;
WAITMK: ACALL DISPLY ;等待M键释放
INC R2 ;R2自增一
CLR C
CJNE R2, #0C8H, JGQUIC ;若R2大于等于200则调用快进子程序

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭