📄 jibili.asm
字号:
; 计数器LCD串行接口程序
;***************************************************************************
;* MPU AT89C2051 LCD SMS0501C *
;* 设计时间 2005/10/21 16:30 *
;* 开发人员 02-421 高川 4#102寝 *
;* 如需改进与我联系 *
;***************************************************************************
CLKPIN BIT P1.6 ;CLK对应引脚
DIPIN BIT P1.7 ;DATAIN对应引脚
LCDBUF EQU 40H ;LCD缓冲区首地址
LCDBUFEND EQU LCDBUF+4 ;LCD缓冲区末地址(N表示几位
ORG 0000H ;显示缓冲区)
LJMP START
ORG 0003H
LJMP PINT0
START:
mov p1,#3fh
SETB PX0
SETB EX0
setb IT0
SETB EA
MOV SP,#6fH
MOV 60H,#00H
MOV 61H,#00H
mov 62h,#01h ;拨码1 在此改比例
mov 63h,#02h ; 拨码2
mov 64h,#03h ; 拨码3
mov 65h,#04h ;拨码4
mov 66h,#05h ; 拨码5
mov 67h,#06h ; 拨码6
MAIN:
ACALL BCD ;USERCONT
ACALL TRANSRAM
SETB EA
MAIN1: JNB 02H,MAIN1
CLR 02H
SETB EA ;送LCD缓冲区到LCD控制器
SJMP MAIN;START
TRANSRAM:
MOV R1,#LCDBUF
TSR_PA: MOV A,@R1
CALL TRANSBYTE
INC R1
CJNE R1,#LCDBUFEND+1,TSR_PA
RET
TRANSBYTE:
MOV R0,#8
TSB_PA: RRC A
CALL TRANSBIT
DJNZ R0,TSB_PA
RRC A
RET
TRANSBIT:
MOV DIPIN,C ;先送数据到数据口线DI
SETB CLKPIN ;再使时钟口线发一个负脉冲
CLR CLKPIN
SETB CLKPIN
RET
PINT0: CLR EA
clr c ;中断
first: mov r6,p1.0
cjne r6,#00h,second
mov r7,62h
acall jiafa
second: mov r6,p1.1
cjne r6,#00h,third
mov r7,63h
acall jiafa
third: mov r6,p1.2
cjne r6,#00h,fouth
mov r7,64h
acall jiafa
fouth: mov r6,p1.3
cjne r6,#00h,firth
mov r7,#1h
djnz 65h,over
acall jiafa
ret
firth: mov r6,p1.4
cjne r6,#00h,sixth
mov r7,#1h
djnz 66h,over
acall jiafa
ret
sixth: mov r6,p1.5
cjne r6,#00h,over
mov r7,#1h
djnz 67h,over
acall jiafa
over: setb 02h
ret
jiafa: mov a,60h
add a,r7
mov 60h,a
mov a,61
addc a,#00h
mov 61h,a
MOV A,60H
ADD A,#5H ;设定比例
MOV 60H,A
MOV A,61H
ADDC A,#00H
MOV 61H,A
RET
BCD: MOV R2,60H
MOV R3,61H
CLR A
MOV R4,A
MOV R5,A
MOV R6,A
MOV R7,#10H
LP5: CLR C
MOV A,R2
RLC A
MOV R2,A
MOV A,R3
RLC A
MOV R3,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R5
ADDC A,R5
DA A
MOV R5,A
MOV A,R6
ADDC A,R6
DA A
MOV R6,A
DJNZ R7,LP5
MOV 46H,R4
MOV 47H,R5
ACALL DISPLAY1
RETI
display1: MOV R0,#40H
MOV @R0,#0FFH
INC R0
MOV A,#0F0H
ANL A,47H
ACALL QU0
INC R0
MOV A,#0FH
ANL A,47H
ACALL QU1
INC R0
MOV A,#0F0H
ANL A,46H
ACALL QU2
INC R0
MOV A,#0FH
ANL A,46H
ACALL ONE
RET
QU2: CJNE A,#00H,ONE1
CLR A
CJNE A,47H,ZERO0
MOV @R0,#0FFH
RET
QU1: CJNE A,#00H,ONE
CLR A
CJNE A,47H,ZERO
MOV @R0,#0FFH
RET
QU0: CJNE A,#00H,ONE1
MOV @R0,#0FFH
RET
ONE: CJNE A,#01H,TOW
MOV @R0,#0B7H
TOW: CJNE A,#02H,THREE
MOV @R0,#0C2H
THREE: CJNE A,#03H,FOUR
MOV @R0,#92H
FOUR: CJNE A,#04H,FIVE
MOV @R0,#0B4H
FIVE: CJNE A,#05H,SIX
MOV @R0,#98H
SIX: CJNE A,#06H,SEVEN
MOV @R0,#88H
SEVEN: CJNE A,#07H,EIGHT
MOV @R0,#0B3H
EIGHT: CJNE A,#08H,NINE
MOV @R0,#80H
NINE: CJNE A,#09H,ZERO
MOV @R0,#90H
ZERO: CJNE A,#00H,OK
MOV @R0,#81H
OK: RETI
ONE1: CJNE A,#10H,TOW2
MOV @R0,#0B7H
TOW2: CJNE A,#20H,THREE3
MOV @R0,#0C2H
THREE3: CJNE A,#30H,FOUR4
MOV @R0,#92H
FOUR4: CJNE A,#40H,FIVE5
MOV @R0,#0B4H
FIVE5: CJNE A,#50H,SIX6
MOV @R0,#98H
SIX6: CJNE A,#60H,SEVEN7
MOV @R0,#88H
SEVEN7: CJNE A,#70H,EIGHT8
MOV @R0,#0B3H
EIGHT8: CJNE A,#80H,NINE9
MOV @R0,#80H
NINE9: CJNE A,#90H,ZERO0
MOV @R0,#90H
ZERO0: CJNE A,#00H,KO
MOV @R0,#81H
KO: RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -