📄 timer_a.asm
字号:
;//*****************************************************
;//实现功能:单片机的晶振为12MHz,使用定时/计数器0实现每
;// 0.5秒改变一次接在P1.0上的发光二极管的状态.
;//目标板 :至强51开发板
;//开发商 :电子开发网www.dzkf.com (专业提供开发方案,
;// 电子元器件网上订购,单片机培训服务)
;//对开发板有什么疑问,请上我们的论坛bbs.dzkf.com探讨
;//*****************************************************
;//*****************宏定义*****************************
p_light equ P1.0
org 00h
ajmp main
;//*********************主函数************************
;//描 述:使用定时/计数器0实现每0.5秒改变一次接在
;// P1.0上的发光二极管的状态
;//入口参数:无
;//返回参数:无
;//设 计:ycj
;//最后修改:时间(2006.5.2) 修改人(ycj)
;//****************************************************
org 30h
main:
mov sp,#50h
mov R7,#0
mov R6,#001h
call timer_init;定时器初始化
;对定时器0赋初值
mov TH0,#03ch
mov TL0,#0afh
setb TR0;启动T0
main_0:
mov a,#10;循环次数
cpl p_light;取反i/o电平
main_1:
jnb TF0,$;等待T0溢出
;溢出,重赋值,并清TF0
mov TH0,#03ch
mov TL0,#0afh
clr TF0
djnz acc,main_1;循环10次
ajmp main_0
;//************************定时器初始化函数*******************************
;//描 述:对定时/计数器初始化
;//入口参数:R7 定时/计数器的编号(0或者1)
;// R6 定时/计数器的状态(GATE,C/T,M1,M0对应这R6.3,R6.2,R6.1,R6.0)
;//返回参数:无
;//设 计:ycj
;//最后修改:时间(2006.5.2) 修改人(ycj)
;//************************************************************************
timer_init:
push acc
push psw
cjne R7,#0,timer1;判断是否是T0
;是T0
mov a,#0f0h;清T0的TMOD状态
anl a,TMOD;
orl a,R6;把需要设定的状态写进TMOD
mov TMOD,a
pop psw
pop acc
ret
timer1:
cjne R7,#1,timer_init_err;判断是否是T0
;是
mov a,#00fh;清T1的TMOD状态
anl a,TMOD
xch a,R6;把需要设定的状态写进TMOD
swap a
orl a,R6
mov TMOD,a
timer_init_err:
pop psw
pop acc
ret
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -