📄 sxd.txt
字号:
功能:Keil uVision2下,串口模式0串行移位输出,与74LS164配合点亮7段数码管
$NOMOD51
$INCLUDE (REG52.INC) ;包含自定义的头文件,可以不要
ORG 0000H
LJMP MAIN ;跳转指令,程序跳转到MAIN处
ORG 0003H
LJMP INT0ISR ;外部中断0的中断服务程序置于此处 ;或者RETI
ORG 000BH
LJMP Timer0ISR
ORG 0013H
LJMP INT1ISR
ORG 001BH
LJMP Timer1ISR
ORG 0023H
LJMP UARTISR
ORG 002BH
LJMP Timer2ISR ;仅52系列
;*************************************************************************
; 主程序
;**************************************************************************
ORG 30h
MAIN:
MOV TCON,#01H; INT0 ,
MOV TMOD,#00000001B ;MODE 1,16Bits,Timer
MOV TH0,#15H
MOV TL0,#0A0H; 6Oms
SETB TR0
SETB ET0; Enable Counter/Timer0 Interrupt
SETB EX0 ;Enable external INT0
SETB EA
MOV IP,#00H
MOV SCON,#00H ;SERIAL PORT, MODE 0,REN=0
CLR 20H; Byte 20H
MOV A,20H
ACALL DISPLAY
SJMP $ ;Waiting for interrupt
;***********************************************************************
;LED7段数码管
;入口参数:Acc
;占用资源:Acc,串口
;出口参数:无
;***********************************************************************
DISPLAY:
MOV DPTR, #TABLE
MOVC A, @A+DPTR
CLR TI ;TI清0
MOV SBUF, A ;发送
JNB TI, $ ;等待发送完成
RET
;**********************************************************************
;延时2S子程序
;入口参数:无
;占用资源:已被入栈保护
;出口参数:无
;**********************************************************************
DELAY2S:
PUSH ACC ;Store Accumulateor
MOV A,R1
PUSH ACC ;Store R1
MOV A,R2
PUSH ACC ;Store R2
MOV A,R3
PUSH ACC ;Store R3
MOV R1,#07H ;R1=03,delay about 1s@11.0592M;
DL13: MOV R2, #0FFH ;1
DL12: MOV R3, #0ffH ;1
DL11: NOP ;1
NOP ;1
DJNZ R3, DL11 ;2
DJNZ R2, DL12 ;2
DJNZ R1,DL13
POP ACC
MOV R3,A ;Resume R3
POP ACC
MOV R2,A ;Resume R2
POP ACC
MOV R1,A ;Resume R1
POP ACC ;Resume Accumulater
RET ;2
;**********************************************************************
;延时2S子程序
;入口参数:无
;占用资源:已被入栈保护
;出口参数:无
;**********************************************************************
DELAY10mS:
PUSH ACC ;Store Accumulateor
MOV A,R1
PUSH ACC ;Store R1
MOV A,R2
PUSH ACC ;Store R2
MOV R1, #0AH ; delay 10ms @11.0592M;
DL22: MOV R2, #0f0H ;1 ,machine cycle 1+[1+(1+2+1)*R2+2]*R1+2
DL21: NOP ;1
NOP ;1
DJNZ R2, DL21 ;2
DJNZ R1, DL22 ;2
POP ACC
MOV R2,A ;Resume R2
POP ACC
MOV R1,A ;Resume R1
POP ACC
RET ;2
;**********************************************************************
;延时1mS子程序
;入口参数:无
;占用资源:已被入栈保护
;出口参数:无
;**********************************************************************
DELAY1mS:
PUSH ACC ;Store Accumulateor
MOV A,R1
PUSH ACC ;Store R1
MOV A,R2
PUSH ACC ;Store R2
MOV R1, #0AH ; delay 1ms@11.0592M;
DL2: MOV R2, #019H ;1
DL1: NOP ;1
NOP ;1
DJNZ R2, DL1 ;2
DJNZ R1, DL2 ;2
POP ACC
MOV R2,A ;Resume R2
POP ACC
MOV R1,A ;Resume R1
POP ACC
RET ;2
;**********************************************************************
;七段数码管字模
;**********************************************************************
TABLE:DB 0C0H,0F9H,0A4H ;0,1,2
DB 0B0H,99H,92H ;3,4,5
DB 82H,0F8H,00H,90H ;6,7,8,9
;**********************************************************************
;中断服务子程序
;占用资源:?
;出口参数:?
;**********************************************************************
INT0ISR: ;外部中断0的中断服务程序置于此处 ;或者RETI
INC 20H
MOV A,20H
PUSH ACC
ACALL DISPLAY
POP ACC
CJNE A,#9, NEXTLOOP
MOV 20H,#0ffH ;0ffh+1=00
NEXTLOOP:
RETI
Timer0ISR:
MOV TH0,#15H
MOV TL0,#0A0H; 6Oms
SETB TR0
CPL P3.4
RETI
INT1ISR:
RETI
Timer1ISR:
RETI
UARTISR:
RETI
Timer2ISR: ;仅52系列
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -