📄 yi3.asm
字号:
; 假使 使用的是8051 芯片,用8255做I/O口的联接
; 并假设8255的PA口 ,PB 口 , pc 口 , 控制口的地址为:
; #3F00H ,#3F01H, #3F02H ,#3F03H
;R0 ,R1,R2 ,R3,的用处用来分别表4位LED的计数
ORG 0000H
SJMP MAIN
ORG 000bH
ljmp Timer_0;
ORG 001bH
AJMP Timer_1 ;用以刷新数据
org 0040h
MAIN:
SETB ET0 ; 允许T0中断
SETB ET1 ; 允许T1中断
SETB EA ; CPU 开中断
MOV TMOD , #01H ; 送2ms时间常数
MOV TL1 , #04H ;
MOV TH1 , #0FH ;
MOV TL0 , #0E8H ; 送计数1000
MOV TH0 , #03H ;
SETB TR0 ; 启动T0计数
SETB TR1 ; 启动T1计数
MOV A , #80H
MOV DPTR , #CWR
MOVX @DPTR , A ;送方式控制字
MOV R0 ,#00H ;寄存器清零
MOV R1 ,#00H
MOV R3 ,#00H
MOV R3 ,#00H
MOV R4 ,#00H
loop:
nop
nop
nop
jmp loop ; 等待
; Timer_0 中断子程序
Timer_0:
nop
nop
LCALL DELAY ; 调用延时
INC R0 ;让R0加一代表数据加了1
MOV A ,R0
PUSH A
CLR C ;
MOV A ,R0
SUBB A , #0AH ;
JZ L2 ; A 为0 就转移
POP A
MOV R0 ,A
;RETI ; 中断返回
L2:
INC R1
MOV A, R1
PUSH A
MOV R0 , #00H ;R0清零
CLR C
MOV A ,R1
SUBB A , #0AH ;
JZ L3 ; A 为0 就转移 否则返回
POP A
MOV R1 ,A
RETI ; 中断返回
L3:
INC R2
MOV R1 , #00H ; R1清零
CLR C
MOV A ,R2
SUBB A , #0AH
JZ L4 ; A 为0 就转移 否则返
RETI ; 中断返回
L4: INC R3
MOV R2 , #00H ; R2清零
CLR C
MOV A ,R3
SUBB A ,#0AH
JZ L5
RETI
L5:
MOV R3 ,#00H ;R3清零
RETI
;Timer_1的子程序
TIMER_1 :
INC R4 ; 用R4 表示要送数的位
PUSH A
MOV A ,R4
CLR C
SUBB A ,#01H
JZ PM1 ; A为零转移
MOV A ,R4
SUBB A ,#02H
JZ PM2 ; A为零转
MOV A ,R4
SUBB A ,#03H
JZ PM3 ; A为零转移
PM4: MOV A ,BUFFER ; 数据口的首地址
ADD A ,R3
MOV DPTR ,#PORTB ;
MOVX @DPTR , A ;
MOV DPTR , #PORTA ;
MOV A ,#08H
MOVX @DPTR , A ;
PUSH A
MOV R4 , #00H ; R4清零
RETI ; 中断返回
PM1:
MOV A ,BUFFER ; 数据口的首地址
ADD A ,R0
MOV DPTR ,#PORTB ;
MOVX @DPTR , A ;
MOV DPTR , #PORTA ;
MOV A ,#01H
MOVX @DPTR , A ;
RETI ;
PM2:
MOV A ,BUFFER ; 数据口的首地址
ADD A ,R1
MOV DPTR ,#PORTB ;
MOVX @DPTR , A ;
MOV DPTR , #PORTA ;
MOV A ,#02H
MOVX @DPTR , A ;
RETI
PM3:
MOV A ,BUFFER ; 数据口的首地址
ADD A ,R2
MOV DPTR ,#PORTB ;
MOVX @DPTR , A ;
MOV DPTR , #PORTA ;
MOV A ,#04H
MOVX @DPTR , A ;
RETI
;延时1MS
DELAY:
MOV R6 , #02H ;
DL: MOV R7 , #0FH
DL7: DJNZ R7 , DL7 ;
DJNZ R6 , DL
RET
PORTA: DW 0F00H
PORTB: DW 0F01H
CWR : DW 0F03H ; 确定方是字 A口为输出送7段码,B 口为输出送地址;
BUFFER:
DB 0EFH ; "灭"
DB 3FH ; 0
DB 06H ; 1
DB 5BH ; 2
DB 4FH ; 3
DB 66H ; 4
DB 6DH ; 5
DB 7DH ; 6
DB 07H ; 7
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -