專注電子技術(shù)學(xué)習與研究
當前位置:單片機教程網(wǎng) >> MCU設(shè)計實例 >> 瀏覽文章

單片機匯編實驗二:定時器實驗

作者:韓冰   來源:本站原創(chuàng)   點擊數(shù):  更新時間:2013年11月30日   【字體:

實驗要求:
由AT89S52內(nèi)部定時器0,按方式1工作,即作為16位定時器使用每0.05秒T1溢出中斷一次。P1口的P1.0~P1.8分別接8個發(fā)光二極管。要求編寫程序模擬一時序控制裝置。開機后第一秒鐘L1,L8亮,第二秒鐘L2,L7亮,第三秒鐘L3,L6亮,第四秒L4,L5亮,第五秒L3,L6亮,第六秒L2,L7亮,第七秒L1,L8亮,第八秒L1,L3,L5,L7亮,第九秒L2,L4,L6,L8亮,第十秒全亮,第十一秒全滅。然后再從頭循環(huán)。
//This is the second program of the homework;
//Name:  WQ   DATE: 2013\2\6
//In this program we used the Intterput;
ORG 0000H   //無條件 轉(zhuǎn)移指令
LJMP MAIN    //LJMP 長轉(zhuǎn)移指令  65535  (雙字節(jié))
ORG 000BH   //AJMP 絕對轉(zhuǎn)移    2K
LJMP INTT0  // SJMP  短轉(zhuǎn)移 -128——127
                      // JMP 變址轉(zhuǎn)移  JMP @A+DPTR
                     //中斷程序可以放在前面和后面
                     //另外只要程序段的空間能合理分配不沖突就能隨便調(diào)用
          ORG 0050H
MAIN:MOV DPTR,#TABLE
          MOV R1,#11   //R1做一個計數(shù)器 查表用
          CLR A    //將A清零,用來尋址
          MOV R2,A     //另一個計數(shù)器用來加減
          MOV TMOD,#01H
          MOV TH0,#4CH
          MOV TL0,#00H
          MOV R3,#20   //R3做一個計數(shù)器
          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 //不滿足調(diào)見返回主程序繼續(xù)計時 
          MOV R1,#11  //循環(huán)之后置數(shù)
          MOV R2 ,#0  //循環(huán)之后清零
RETN:RETI    //中斷子程序的返回指令
TABLE:DB 7EH,0BDH,0DBH,0E7H,0DBH,0BDH,7EH,0AAH,55H,00H,0FFH  //十六進制數(shù)前面要加零 
           END  //主程序結(jié)束指令

關(guān)閉窗口

相關(guān)文章