51单片机如何使外部中断显示60秒倒计时求程序,谢谢。

要c语言程序。

ORG     00H  ;
          SJMP    STAR   ;
          ORG     1BH;
          SJMP    TIS;              转T1中断服务程序
          ORG     30H;
   STAR:  MOV     R2,#60H;       倒计时初值
          MOV     R4,#20H;       定时中断溢出计数器
          MOV     IE,#88H;      开中断
          MOV     TMOD,#10H;      
          MOV     TH1,#3CH;       定时初值
          MOV     TL1,#0B0H;     定时初值
          SETB    TR1;       启动
          ACALL   DIS;       调用显示子程序
          SJMP    $;
   TIS:   MOV     TH1,#3CH;
          MOV     TL1,#0B0H;
          DJNZ    R4,T1S1;          定时1S到否
          MOV     R4,#20;       到1S,重置R4=20
          DJNZ    R2,T1S0;       倒计时递减
          CLR     TR1;          倒计时结束,关定时器
   T1S0:  ACALL   DIS;      调显示
   T1S1:  RETI           ;         中断返回
   SEG7:  INC     A;             A的值加一
          MOVC    A,@A+PC;         取显示断段
       RET;   ;
       DB  0C0H,0F9H,0A4H,0B0H; ;    0至3的共阳型显示码
       DB  99H,92H,82H,0F8H;;     4至7的共阳型显示码
       DB  80H,90H,88H,83H;     8至B的共阳型显示码
       DB  0C6H,0A1H,86H,8EH;;     C至F的共阳型显示码
  DIS: MOV     A,R2;       ;     单字节十六进制数转为十进制数
       MOV     B,#10   ;
       DIV     AB ;
       ACALL   SEG7 ;
       MOV     P1,A;     ;        显示十位
       MOV     A,B;;
       ACALL   SEG7;;
       MOV     P2,A; ;          显示个位
       RET;      ;          子程序返回
       END ;

追问

有c语言的程序吗?这个看不懂,不好意思了

温馨提示:答案为网友推荐,仅供参考
相似回答