📄 progcontrol.asm
字号:
MOV 5DH,#06H ;X=04H
MOV 5EH,#80H ;ASCII"^"
LCALL ASCIICODE8
MOV 5DH,#04H ;X=06H
MOV 5EH,#64H ;ASCII"d"
LCALL ASCIICODE8
MOV 5DH,#05H ;X=07H
MOV 5EH,#42H ;ASCII"B"
LCALL ASCIICODE8
MOV 60H,#08H ;Y=08H
MOV 5DH,#04H ;X=04H
MOV 5EH,#36H ;ASCII"6"
LCALL ASCIICODE8
MOV 5DH,#05H ;X=05H
MOV 5EH,#30H ;ASCII"0"
LCALL ASCIICODE8
MOV 64H,#33H ;X=33H
MOV 65H,#07H ;Y=08H
LCALL ASCIIPOINT ;Y轴"."显示
MOV 64H,#34H
LCALL ASCIIPOINT
MOV 64H,#35H
LCALL ASCIIPOINT
MOV 64H,#33H ;X=33H
MOV R7,#44
DISPLOOP1: INC 65H
LCALL ASCIIPOINT ;"."显示
DJNZ R7,DISPLOOP1
MOV 60H,#2BH
MOV 5DH,#05H ;X=05H
MOV 5EH,#30H ;ASCII"0"
LCALL ASCIICODE8
MOV 65H,#33H ;Y=33H
MOV R7,#99;
MOV 64H,#33H
LCALL ASCIIPOINT ;"."显示
DISPLOOP2: INC 64H ;X轴"."显示
LCALL ASCIIPOINT ;"."显示
DJNZ R7,DISPLOOP2
MOV 60H,#30H ;Y=30H
MOV 5DH,#12H ;X=12H
MOV 5EH,#83H ;ASCII">"
LCALL ASCIICODE8 ;
MOV 60H,#38H ;Y=38H
MOV 5DH,#12H ;X=12H
MOV 5EH,#66H ;ASCII"f"
LCALL ASCIICODE8 ;
MOV 60H,#37H ;Y=37H
MOV 5DH,#07H
MOV 5EH,#30H ;ASCII"0"
LCALL ASCIICODE8
INC 5DH
MOV 5EH,#2EH ;ASCII"."
LCALL ASCIICODE8
INC 5DH
MOV 5EH,#31H ;ASCII"1"
LCALL ASCIICODE8
MOV 5DH,#0FH
MOV 5EH,#32H ;ASCII"2"
LCALL ASCIICODE8
INC 5DH
MOV 5EH,#30H ;ASCII"0"
LCALL ASCIICODE8
INC 5DH
MOV 5EH,#30H ;ASCII"0"
LCALL ASCIICODE8
MOV 64H,#88H
MOV 65H,#31H
LCALL ASCIIPOINT
INC 65H
LCALL ASCIIPOINT
LCALL D100MS
LCALL D100MS
MOV R7,#14
MOV TH0,#038H
MOV TL0,#038H
MOV MIAO,#00
MOV 64H,#30H ;定位X坐标
LOOPP0:
SETB ET0
SETB TR0
SETB EA
ACALL D500MS
;CLR ET0
LCALL ADSWITCH
MOV A,CUNSHU
CLR C
CJNE A,#88,DOCOMP
DOCOMP: JC TOFPDISP
MOV A,#88
TOFPDISP:
MOV B,#2
DIV AB
MOV 65H,A
MOV A,52
CLR C
SUBB A,65H
MOV 65H,A
LCALL FPDISP
DJNZ R7,LOOPP0
CLR ET0
CLR TR0
RET
ADSWITCH:
CLR KCS
;Write "1" ,The 1' pusle 0832起始
CLR KCLK
NOP
SETB KDI
NOP
SETB KCLK
NOP
NOP
CPL KDI ;反相便于送入
;Write "1" ,The 2' pusle 0832配置
CLR KCLK
NOP
SETB KDI
NOP
SETB KCLK
NOP
NOP
CPL KDI ;反相便于送入
;Write "0" ,The 3' pusle 0832配置
CLR KCLK
NOP
CLR KDI
NOP
SETB KCLK
NOP
NOP
CPL KDI ;反相便于送入
CLR KCLK
NOP
NOP
SETB KCLK
NOP
NOP
;读数据
MOV R6,#8 ;把八位数据装进CUNSHU里
INTIME1:
CLR KCLK
NOP
MOV C,KD0
RLC A
SETB KCLK
DJNZ R6,INTIME1
;MOV A,#255
MOV CUNSHU,A
;MOV
SETB KCS
RET
FPDISP:
INC MIAO
MOV A,MIAO
CJNE A,#1,BIJIAO1 ;第一秒到,变换的频率
MOV TH0,#059H
MOV TL0,#059H
MOV 64H,#3BH ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO1:
CJNE A,#2,BIJIAO2 ;第二秒到,变换的频率
CLR TR0
MOV TH0,#097H
MOV TL0,#097H
MOV 64H,#40H ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO2:
CJNE A,#3,BIJIAO3 ;第三秒到,变换的频率
CLR TR0
MOV TH0,#0ACH
MOV TL0,#0ACH
MOV 64H,#45H ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO3:
CJNE A,#4,BIJIAO4 ;第四秒到,变换的频率
CLR TR0
MOV TH0,#0C9H
MOV TL0,#0C9H
MOV 64H,#4AH ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO4:
CJNE A,#5,BIJIAO5 ;第五秒到,变换的频率
CLR TR0
MOV TH0,#0D1H
MOV TL0,#0D1H
MOV 64H,#4FH ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO5:
CJNE A,#6,BIJIAO6 ;第六秒到,变换的频率
CLR TR0
MOV TH0,#0D6H
MOV TL0,#0D6H
MOV 64H,#54H ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO6:
CJNE A,#7,BIJIAO7 ;第七秒到,变换的频率
CLR TR0
MOV TH0,#0DEH
MOV TL0,#0DEH
MOV 64H,#59H ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO7:
CJNE A,#8,BIJIAO8 ;第八秒到,变换的频率
CLR TR0
MOV TH0,#0E4H
MOV TL0,#0E4H
MOV 64H,#5EH ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO8:
CJNE A,#9,BIJIAO9 ;第九秒到,变换的频率
CLR TR0
MOV TH0,#0EBH
MOV TL0,#0EBH
MOV 64H,#63H ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO9:
CJNE A,#10,BIJIAO10 ;第十秒到,变换的频率
CLR TR0
MOV TH0,#0EFH
MOV TL0,#0EFH
MOV 64H,#68H ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO10:
CJNE A,#11,BIJIAO11 ;第11秒到,变换的频率
CLR TR0
MOV TH0,#0F4H
MOV TL0,#0F4H
MOV 64H,#6DH ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO11:
CJNE A,#12,BIJIAO12 ;第12秒到,变换的频率
CLR TR0
MOV TH0,#0F5H
MOV TL0,#0F5H
MOV 64H,#72H ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO12:
CJNE A,#13,BIJIAO13 ;第13秒到,变换的频率
CLR TR0
MOV TH0,#0F7H
MOV TL0,#0F7H
MOV 64H,#77H ;定位X坐标
LCALL ASCIIPOINT
AJMP RET1
BIJIAO13: ;第七秒到,退出
MOV 64H,#7CH ;定位X坐标
LCALL ASCIIPOINT
RET1: SETB TR0
SETB ET0
RET
;**********************************************************************************
;从HD7279接收1个字节,高位在前
RECEIVE: MOV BIT_COUNT,#8 ;设定计数器=8
SETB DAT
LCALL LONG_DELAY
RECEIVE_LOOP:SETB CLK2
LCALL SHORT_DELAY
MOV A,DATA_IN ;数据左移
RL A
MOV DATA_IN,A
MOV C,DAT ;读取1位数据
MOV DATA_IN.0,C
CLR CLK2
LCALL SHORT_DELAY
DJNZ BIT_COUNT,RECEIVE_LOOP ;是否已接收8位数据
CLR DAT
RET
;*********************************************************************************
;发送1个字节到HD7279,高位在前
SEND: MOV BIT_COUNT,#8
LCALL LONG_DELAY
SEND_LOOP: MOV C,DATA_OUT.7 ;输出1位
MOV DAT,C
SETB CLK2
MOV A,DATA_OUT
RL A
MOV DATA_OUT,A
LCALL SHORT_DELAY
CLR CLK2
LCALL SHORT_DELAY
DJNZ BIT_COUNT,SEND_LOOP ;检测是否8位均发送完毕
CLR DAT
RET
;***********************************************************
; 时延子程序
;***********************************************************
D10MS: MOV TIMER1,#40 ;10MS时延
D10MS1: MOV TIMER2,#250
DJNZ TIMER2,$
DJNZ TIMER1,D10MS1
RET
D100MS: MOV TIMER3,#2
MOV TIMER2,#200 ;100MS时延
D100MS1: MOV TIMER1,#248 ;0.5MS
DJNZ TIMER1,$
DJNZ TIMER2,D100MS1
MOV TIMER2,#200
DJNZ TIMER3,D100MS1
RET
D500MS: MOV TIMER3,#10
MOV TIMER2,#200 ;100MS时延
D500MS1: MOV TIMER1,#248 ;0.5MS
DJNZ TIMER1,$
DJNZ TIMER2,D500MS1
MOV TIMER2,#200
DJNZ TIMER3,D500MS1
RET
D1S: MOV TIMER3,#200 ;1S时延
D1S1: MOV TIMER2,#20 ;10MS
D1S2: MOV TIMER1,#229 ;0.5MS
DJNZ TIMER1,$
DJNZ TIMER2,D1S2
DJNZ TIMER3,D1S1
RET
LONG_DELAY: MOV TIMER,#25 ;设定延时为约50us
DJNZ TIMER,$
RET
SHORT_DELAY: MOV TIMER,#4 ;设定延时为约8us
DJNZ TIMER,$
RET
;*******************键值************************************
TAB1: DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
TAB2: DB 30H,31H,32H,33H,34H
DB 35H,36H,37H,38H,39H
TO_MU_2: ;LCALL LOOPDO2345_2
JB KEY,$
MOV DATA_OUT,#00010101B ;有键按下,发送读键盘指令
LCALL SEND
LCALL RECEIVE
MOV A,DATA_IN
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV 30H,A
LCALL SETUPMENU_2
D2: JNB KEY,$
JB KEY,$
MOV DATA_OUT,#00010101B ;有键按下,发送读键盘指令
LCALL SEND
LCALL RECEIVE
MOV A,DATA_IN
MOV DPTR,#TAB1
MOVC A,@A+DPTR
MOV 31H,A
LCALL SETUPMENU_2
JNB KEY,$
JB KEY,$
;MOV DATA_OUT,#00010101B ;有键按下,发送读键盘指令
;LCALL SEND
;LCALL RECEIVE
;MOV A,DATA_IN
C1:
MOV A,30H
CLR C
SUBB A,#30H
MOV B,#2
MUL AB ;A*2
MOV DPTR,#TAB3
JMP @A+DPTR ;跳转到“转移表”
TAB3: AJMP GN0
AJMP GN1 ;功能0
AJMP GN2
AJMP GN3
AJMP GN4
AJMP GN5
AJMP GN6
GN0: AJMP EXIT
GN1: CLR P00 ;10DB K1
SETB P01
SETB P02
CLR P03
NOP
AJMP EXIT
GN2: SETB P00 ;20DB K2
CLR P01
SETB P02
CLR P03
NOP
AJMP EXIT
GN3: SETB P00 ;30DB K3
SETB P01
CLR P02
CLR P03
NOP
AJMP EXIT
GN4: CLR P00 ;40DB K1+K3
SETB P01
SETB P02
SETB P03
NOP
AJMP EXIT
GN5: SETB P00 ;50DB K2+K3
CLR P01
SETB P02
SETB P03
NOP
AJMP EXIT
GN6: SETB P00 ;60DB K3+K4
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -