×
单片机 > 单片机程序设计 > 详情

单片机汇编实验三:外部中断实验

发布时间:2020-05-26 发布时间:
|
实验要求:

由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亮,第十秒全亮,第十一秒全灭。然后再从头循环。

由键盘生成外部中断信号,当任意键按下时,为外部中断请求信号,此时L3,L4, L5,L6亮,持续时间为5秒。
//This is the third program of the homework;
//Name:  WQ   DATE: 2013214
//In this program we used  Intterput;
 ORG 0000H     //****无条件转移指令*******
 LJMP MAIN     //LJMP 长转移指令  65535  (双字节)
 ORG 0003H     //0003H 中断程序I0入口地址   
 LJMP WINTT0   //AJMP 绝对转移      
 ORG 000BH     //000BH 计时器程序T0入口地址      
 LJMP WT0      //SJMP  短转移 -128——127
//   ORG 001BH    //001BH 计时器程序T1入口地址 JMP 变址转移  JMP @A+DPTR  
//   LJMP WT1  //另外只要程序段的空间能合理分配不冲突就能随便调用
 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     //开启计时器0
 //  SETB TR1     //开启计时器1
     SETB IT0     //边沿触发方式
     SETB EX0        //允许外部中断0
     MOV P0,#0FFH  
OK1: MOV C,P3.4
     JNC KAISHI
     MOV C,P3.5
  JNC KAISHI
     MOV C,P3.6
  JNC KAISHI
     MOV C,P3.7
  JNC KAISHI
     SJMP OK1
KAISHI:CLR P3.2
       SETB P3.2
   SJMP OK1

//外部中断程序的入口
 ORG 0AA0H
 WINTT0:PUSH TH0
        PUSH TL0
        CLR TR0         //关闭定时器0
        MOV P1,#3CH
        CALL DELAY1
        POP TL0
        POP TH0
        SETB TR0
        RETI                  
      ORG 0100H    //计时器0程序
WT0:  MOV TH0,#4CH //计时器0置数
      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         //中断子程序的返回指令
 

//延时函数
ORG 0200H
delay1:MOV R7,#0FFH 
DELY1:MOV R6,#0AAH
DELY2:MOV R0,#024H
DELY3: NOP//MOV P1,#00H
      DJNZ R0,DELY3 
      DJNZ R6,DELY2
   DJNZ R7,DELY1
   RET
TABLE:DB 7EH,0BDH,0DBH,0E7H,0DBH
      DB 0BDH,7EH,0AAH,55H,00H,0FFH  //十六进制数前面要加零  
      END                          //主程序结束指令

关键字:单片机  汇编实验  外部中断

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会