专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机汇编实验二:定时器实验

作者:韩冰   来源:本站原创   点击数:  更新时间:2013年11月30日   【字体:

实验要求:
由AT89S52内部定时器0,按方式1工作,即作为16位定时器使用每0.05秒T1溢出中断一次。P1口的P1.0~P1.8分别接8个发光二极管。要求编写程序模拟一时序控制装置。开机后第一秒钟L1,L8亮,第二秒钟L2,L7亮,第三秒钟L3,L6亮,第四秒L4,L5亮,第五秒L3,L6亮,第六秒L2,L7亮,第七秒L1,L8亮,第八秒L1,L3,L5,L7亮,第九秒L2,L4,L6,L8亮,第十秒全亮,第十一秒全灭。然后再从头循环。
//This is the second program of the homework;
//Name:  WQ   DATE: 2013\2\6
//In this program we used the Intterput;
ORG 0000H   //无条件 转移指令
LJMP MAIN    //LJMP 长转移指令  65535  (双字节)
ORG 000BH   //AJMP 绝对转移    2K
LJMP INTT0  // SJMP  短转移 -128——127
                      // JMP 变址转移  JMP @A+DPTR
                     //中断程序可以放在前面和后面
                     //另外只要程序段的空间能合理分配不冲突就能随便调用
          ORG 0050H
MAIN:MOV DPTR,#TABLE
          MOV R1,#11   //R1做一个计数器 查表用
          CLR A    //将A清零,用来寻址
          MOV R2,A     //另一个计数器用来加减
          MOV TMOD,#01H
          MOV TH0,#4CH
          MOV TL0,#00H
          MOV R3,#20   //R3做一个计数器
          SETB EA   //开总中断
          SETB ET0   //允许计时器
          SETB TR0   //开启计时器
OK:    SJMP OK
 
          ORG 0150H
INTT0:MOV TH0,#4CH
           MOV TL0,#00H
           DJNZ R3,RETN //1秒钟到来了
           MOV R3,#20 
           MOV A,R2
           MOVC A,@A+DPTR
          MOV P1,A
          INC R2    //指针加一
          DJNZ R1,RETN //不满足调见返回主程序继续计时 
          MOV R1,#11  //循环之后置数
          MOV R2 ,#0  //循环之后清零
RETN:RETI    //中断子程序的返回指令
TABLE:DB 7EH,0BDH,0DBH,0E7H,0DBH,0BDH,7EH,0AAH,55H,00H,0FFH  //十六进制数前面要加零 
           END  //主程序结束指令

关闭窗口

相关文章