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

📄 blinky.asm

📁 定时器中断实验代码
💻 ASM
字号:
$INCLUDE(C8051F020.INC)    	;SFR寄存器声明

COUNT DATA 07FH            	;定时器3中断中用到的计数变量 
I     DATA 07EH            	;定时器3中断中用到的计数变量
J     DATA 07DH            	;定时器3中断中用到的计数变量
LED   DATA 07CH            	;P2口控制输出的变量

  ORG 0000H
  JMP MAIN               	;跳转到主程序
  ORG 0073H              	;定时器T3的中断服务程序
  LJMP T3INTR            	;跳转到中断服务程序地址处执行
  ORG 0100H
MAIN:                      	;主程序 
  MOV WDTCN,#0DEH        	;禁用看门狗定时器
  MOV WDTCN,#0ADH
  LCALL PORT_INIT        	;端口初始化
  LCALL TIMER3_INIT      	;定时器3初始化
  SETB EA                	;开中断
  MOV COUNT, #05H        	;COUNT的初值为0
  MOV I,#09H             	;I的初值为9
  MOV J,#00H             	;J的初值为0
  MOV LED,#0FFH          	;LED的初值为0FFH
LOOP:                      	;在此处循环等待定时器3中断
  SJMP LOOP
    
T3INTR:                    	;定时器3中断服务程序
  PUSH ACC               	;累加器ACC入栈
  ANL TMR3CN,#07FH
  DJNZ COUNT,RETURN      	;COUNT减一不为零直接中断返回
  MOV COUNT,#05H         	;COUNT装入初值
  MOV A,LED              	;LED输出给P3
  MOV P3,A
  MOV DPTR,#P2LED        	;表格位置
  MOV A,J
  MOVC A,@A+DPTR         	;查表
  MOV P2,A               	;查表得到的值输出给P2
  MOV A,LED              	;LED左移1位
  RL A
  ANL A,#0FEH
  MOV LED,A
  INC J                  	;判断J是否加到了8
  MOV A,J
  CJNE A,#08H,NOZEROJ
  MOV J,#00H             	;J如果到了8就重新归为0
NOZEROJ:
  DJNZ I,RETURN          	;I自减1,判断I是否减到0
  MOV I,#09H             	;I重新赋值为9
  MOV LED,#0FFH          	;LED重新赋值为0FFH
RETURN:
  POP ACC               	;累加器ACC出栈
  RETI                  	;中断返回

PORT_INIT:                 	;端口初始化程序
  MOV XBR2,#40H          	;端口配置寄存器,使能交叉开关和
                                ;输入输出端口弱上拉
  RET    

TIMER3_INIT:               	;定时器3初始化程序
  MOV TMR3CN,#0          	;停止定时器3,清零TF3,使用系统时钟
  				;的12分频(SYSCLK/12)作为时间基准
  MOV TMR3RLL,#0E5H      	;定时器初始化重新装入的值
  MOV TMR3RLH,#0BEH
  ;MOV TMR3L,#0FFH        	;设置为立即重新装入定时器初值
  ;MOV TMR3H,#0FFH
  ORL EIE2,#01H          	;使能定时器3中断
  ORL TMR3CN,#04H        	;启动定时器3
  RET    
    
                          	;P2口控制输出的值的表格
P2LED:DB 07FH,0BFH,0DFH,0EFH,0F7H,0FBH,0FDH,0FEH

END

⌨️ 快捷键说明

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