
求一份51单片机用T1定时一秒的汇编程序,不循环,(不要进入死循环)
2个回答
展开全部
;早期学汇编时做的,把关于定时器1的部分提取给你,不知是否能用。
SecCoun EQU 38H ;秒计数器
ORG 0000h
AJMP start
ORG 001bH
LJMP TIMER_1 ;定时中断1入口
ORG 0030H
start:
MOV TMOD,#00010101B ;定时器T1工作于方式1,定时器0工作方式1
MOV TH1,#HIGH(65536-50000);产生50ms定时
MOV TL1,#LOW(65536-50000)
SETB TR1;启动定时器,如果不须开机启动,则在主程序中根据条件启动,把这条删了。
SETB ET1 ;开定时器1中断
SETB EA
mov sp,#50h
main:;下面主程序开始,完成必要的功能,我是测转速用的,在6位数码管上显示
;。。。。。。。。。。
jmp main;完成一次扫描,进入下一轮
TIMER_1:;T1中断服务
PUSH ACC;ACC入栈保护现场
PUSH PSW ;PSW入栈
clr tr1;停定时器1
MOV TH1,#HIGH(65536-50000);从新装入初值
MOV TL1,#LOW(65536-50000)
setb tr1;
INC SecCoun ;秒计数器加1
MOV A,SecCoun
cjne a,#20d,g2;不到1秒则转,中断20次为1s
mov seccoun,#0;清零秒计数器
CLR TR0 ;1s到了,则停止T0的运行
MOV TH1,#HIGH(65536-50000);从新装入初值为下次运行做准备
MOV TL1,#LOW(65536-50000)
g2: pop acc;恢复现场
pop psw
reti ;中断返回
SecCoun EQU 38H ;秒计数器
ORG 0000h
AJMP start
ORG 001bH
LJMP TIMER_1 ;定时中断1入口
ORG 0030H
start:
MOV TMOD,#00010101B ;定时器T1工作于方式1,定时器0工作方式1
MOV TH1,#HIGH(65536-50000);产生50ms定时
MOV TL1,#LOW(65536-50000)
SETB TR1;启动定时器,如果不须开机启动,则在主程序中根据条件启动,把这条删了。
SETB ET1 ;开定时器1中断
SETB EA
mov sp,#50h
main:;下面主程序开始,完成必要的功能,我是测转速用的,在6位数码管上显示
;。。。。。。。。。。
jmp main;完成一次扫描,进入下一轮
TIMER_1:;T1中断服务
PUSH ACC;ACC入栈保护现场
PUSH PSW ;PSW入栈
clr tr1;停定时器1
MOV TH1,#HIGH(65536-50000);从新装入初值
MOV TL1,#LOW(65536-50000)
setb tr1;
INC SecCoun ;秒计数器加1
MOV A,SecCoun
cjne a,#20d,g2;不到1秒则转,中断20次为1s
mov seccoun,#0;清零秒计数器
CLR TR0 ;1s到了,则停止T0的运行
MOV TH1,#HIGH(65536-50000);从新装入初值为下次运行做准备
MOV TL1,#LOW(65536-50000)
g2: pop acc;恢复现场
pop psw
reti ;中断返回

2023-06-12 广告
单片机,即单片微控制器,也称为单片微型计算机,是将中央处理器(CPU)、存储器(ROM,RAM)、输入/输出接口和其他功能部件集成在一块 在一个小块的集成电路上,从而实现对整个电路或系统的数字式控制。单片机不是完成某一个逻辑功能的芯片,而是...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询