⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer_fangbo_a.asm

📁 电子开发网培训用的51单片机内部培训代码
💻 ASM
字号:
;//****************************************************
;//实现功能:单片机的晶振为12MHz,使用定时/计数器0编写
;//	     一个产生2KHz的方波程序,并在P1.0输出
;//目标板  :至强51开发板
;//开发商  :电子开发网www.dzkf.com (专业提供开发方案,
;//          电子元器件网上订购,单片机培训服务)
;//对开发板有什么疑问,请上我们的论坛bbs.dzkf.com探讨
;//****************************************************
;//*****************宏定义*****************************
p_out equ P1.0
td_num equ 20h
	org 00h
	   ajmp main
	org 0Bh
	   ajmp timer0
;//*********************主函数************************
;//描    述:使用使用定时/计数器0编写一个产生2KHz的
;//         方波程序,并在P1.0输出
;//入口参数:无
;//返回参数:无
;//设    计:ycj
;//最后修改:时间(2006.5.2)  修改人(ycj)
;//****************************************************
	org 30h
main:
	mov sp,#50h
	mov R7,#0
	mov R6,#002h
	call timer_init;定时器初始化
	mov TL0,#06h;对定时器0赋初值
	mov TH0,#06h;对定时器0赋自动重装值
	setb TR0;启动T0
	setb ET0;允许定时器0中断
	setb EA;允许全局中断
	mov td_num,#10
main_0: ajmp $;死循环等待中断
	
;//************************定时器初始化函数*******************
;//描    述:对定时/计数器初始化
;//入口参数: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
;//************************定时器0中断处理函数*******************
;//描    述:定时器0中断处理函数,实现P1.0脚输出2KHz的方波
;//入口参数:无
;//返回参数:无
;//设    计:ycj
;//最后修改:时间(2006.5.2)  修改人(ycj)
;//*************************************************************
timer0:
	push psw
	djnz td_num,exit
	cpl  p_out
	mov td_num,#10
exit:
	pop psw
	reti
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -