单片机计数器计数怎么用汇编实现?

2019-07-16 07:07发布

单片机计数器计数怎么用汇编实现,最好能举个例子,感激不尽~~~主要是中断怎么应用
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
北纬的尾
2019-07-16 13:49
给你发个99秒计数的汇编,自己不用汇编,所以不能详细解析
;利用中断的99秒计时器 ,动态扫描两位数码管
ORG 00H
JMP START
ORG 0BH
JMP TIM0
START:MOV R3,#00   ;中断循环次数
      MOV R4,#00H  ;时间初值
      MOV DPTR,#TABLE
      MOV SP,#40H
      MOV TMOD,#01H  ;定时器工作方式
      MOV TH0,#HIGH(65536-3800)
      MOV TL0,#LOW(65536-3800)  ;初值4MS
      SETB TR0
      MOV IE,#82H  ;开中断
TIM0:
     MOV TH0,#HIGH(65536-3800)
     MOV TL0,#LOW(65536-3800)
     INC R3
     CJNE R3,#250,X1  ;1S
     MOV R3,#00
     MOV A,R4       ;十进制转换
     MOV B,#10H
     DIV AB
     MOV 20H,B ; 个位
     MOV 21H,A  ; 十位
     MOV A,R4
     ADD A,#01H
     DA A
     MOV R4,A
     CALL SCAN  ;调用数码管扫描
X1:   PUSH ACC
      PUSH PSW
      CALL SCAN
      POP PSW
      POP ACC
      RETI
SCAN:MOV P2,#0 ;扫描子程序
     MOV A,21H
     MOVC A,@A+DPTR
     MOV P0,A
     CALL DELAY1
     MOV P2,#1  ;0代表选通该位数码管
     MOV A,20H
     MOVC A,@A+DPTR
     MOV P0,A
     CALL DELAY1
     RET
DELAY:MOV R5,#50         ;典型延时程序
D1:   MOV R6,#40
D2:   MOV R7,#248
      CALL SCAN
      DJNZ R7,$
      DJNZ R6,D2
      DJNZ R5,D1
      RET
DELAY1:MOV R6,#4    ;扫描延时
D3:    MOV R7,#248
       DJNZ R7,$
       DJNZ R6,D3
       RET
TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH    ;共阴字码表
END

一周热门 更多>