📄 noname1'.lst
字号:
页 1
10-15-05
08:10:11
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
KEYBUF EQU 35H ;/*键内码
KEY EQU 39H ;/*键显示码
rs BIT P2.2 ;/*LCD模块用*/
rw BIT P2.1 ;/*LCD模块用*/
enable BIT P2.0 ;/*LCD模块用*/
LCDADR EQU 3AH ;/*LCD显示地址
DB0_DB7 DATA P1
FLAG0 EQU 0
;******************************************************************
ORG 000H
0000 2100 AJMP START
ORG 100H
START:
0100 787F MOV R0,#7FH
0102 E4 CLR A
0103 F6 CLRRAM: MOV @R0,A
0104 D8FD DJNZ R0,CLRRAM
0106 75817D MOV SP,#7DH
0109 7580FF MOV P0,#0FFH
010C 7590FF MOV P1,#0FFH
010F 75A0FF MOV P2,#0FFH
0112 75B0FF MOV P3,#0FFH
;***************************************************************
0115 750000 MOV FLAG0,#0
;LCD初始化
0118 12013A LCALL InitialL ;LCD初始化
011B 12017C LCALL CLRLCD ;清LCD
;*******************************************************************************************
;主程序
;*******************************************************************************************
WAIT:
011E 12018A LCALL KEYINPUT ;是否有键按下?
0121 E500 MOV A,FLAG0
0123 B401F8 CJNE A,#1,WAIT
0126 12012B lcall tslcd
0129 80F3 SJMP WAIT
;*****************************************************************
tslcd:
012B 7480 LOOP1: MOV A,#10000000B ;set the address
012D F9 MOV R1,A
012E 12015E CALL Write_instruction
F:\个人文件\已调过的程序\LCD\NONAME1'.ASM
页 2
10-15-05
08:10:11
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
0131 09 INC R1
LOOP2:
0132 E539 MOV A,KEY
0134 2430 ADD A,#30H
0136 12016D CALL WriteLCDData ;显示 第一行字符
;CJNE A,#1001000B,LOOP2
;LOOP3: MOV A,#11000010B ;set the address
;CALL Write_instruction
;LOOP4: MOV R5,#KEY ;显示密码
;CALL PR_KEY
;CJNE A,#11010010B,LOOP4
;LJMP LOOP1
0139 22 RET
;*****************************************************************
;InitialInitial 子程序
;// 设定 字符型LCD模块, 使用DB0--DB7,显示两行,
;// 使用5*7字型 显示器要显示 光标要显示但不闪烁 */
;*****************************************************************
InitialL:
013A 7438 MOV A,#00111000B ;/*LCD功能设定,8位点阵数据传送,2行显示*/
013C 12015E CALL Write_instruction
013F 740E MOV A,#00001110B ;/*屏幕设定开显示,游标ON,但不闪烁*/
0141 12015E CALL Write_instruction
0144 7406 MOV A,#00000110B ;/*加一状态,游标向右移*/
0146 12015E CALL Write_instruction
0149 22 RET
;*****************************************************************
;CheckBusy
;等待LCM有空可以执行下一行命令
;*****************************************************************
CheckBusy:
014A C0E0 PUSH ACC
;CheckBusyLoop:
014C C2A0 CLR ENABLE
014E D2A1 SETB RW
0150 C2A2 CLR RS
0152 D2A0 SETB ENABLE
F:\个人文件\已调过的程序\LCD\NONAME1'.ASM
页 3
10-15-05
08:10:11
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
0154 E590 MOV A,DB0_DB7
0156 C2A0 CLR ENABLE
; JB ACC.7,CheckBusyLoop
0158 D0E0 POP ACC
015A 120181 CALL DELAY
015D 22 RET
;*****************************************************************
;Write_instruction
;将ACC内的资料输入到LCM的IR寄存器
;*****************************************************************
Write_instruction:
015E 314A CALL CheckBusy
0160 C2A0 CLR ENABLE
0162 C2A1 CLR RW
0164 C2A2 CLR RS
0166 D2A0 SETB ENABLE
0168 F590 MOV DB0_DB7,A
016A C2A0 CLR ENABLE
016C 22 RET
;*****************************************************************
;WriteLCDData
;将ACC内的资料输入到LCM的DR寄存器
;*****************************************************************
WriteLCDData:
016D 314A CALL CheckBusy
016F C2A0 CLR ENABLE
0171 C2A1 CLR RW
0173 D2A2 SETB RS
0175 D2A0 SETB ENABLE
0177 F590 MOV DB0_DB7,A
0179 C2A0 CLR ENABLE
017B 22 RET
;*****************************************************************
;cls
;清除LCM的显示字幕
;*****************************************************************
CLRLCD:
017C 7401 MOV A,#01H ;清除LCD屏幕
017E 315E CALL Write_instruction
0180 22 RET
;*****************************************************************
;PR_STRING
;*****************************************************************
;PR_KEY:
; PUSH ACC
;CLR A
F:\个人文件\已调过的程序\LCD\NONAME1'.ASM
页 4
10-15-05
08:10:11
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
;MOV A,#KEY
; ADD A,#30H
;CALL WriteLCDData
;
;POP ACC
;INC A
; RET
;*****************************************************************
;PR_MIMA
;将密码显示在LCM,密码的起地址要存入R0,字串必须以00H结束
;*****************************************************************
;PR_MIMA:
;PUSH ACC
;MIMALP:
;CLR A
;MOV A,@R0
;JZ END_PRMIMA
;CALL WriteLCDData
;INC R0
;JMP MIMALP
;END_PRMIMA:
;POP ACC
;RET
;*****************************************************************
;DELAY
;延迟时间约为R6*(500uS)
;*****************************************************************
DELAY:
0181 7B05 MOV R3,#5
0183 7CF8 D11: MOV R4,#248
0185 DCFE DJNZ R4,$
0187 DBFA DJNZ R3,D11
0189 22 RET
;*******************************************************************************************
KEYINPUT:
018A 753502 MOV KEYBUF,#2
;
018D 7580FF MOV P0,#0FFH
0190 C284 CLR P0.4
0192 E580 MOV A,P0
0194 540F ANL A,#0FH
0196 640F XRL A,#0FH ;有键按下吗?
0198 6047 JZ NOKEY1
019A 1202E7 LCALL DELY10US
019D E580 MOV A,P0
019F 540F ANL A,#0FH
F:\个人文件\已调过的程序\LCD\NONAME1'.ASM
页 5
10-15-05
08:10:11
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
01A1 640F XRL A,#0FH ;真的有键按下吗?
01A3 603C JZ NOKEY1
01A5 E580 MOV A,P0
01A7 540F ANL A,#0FH
01A9 B40E06 CJNE A,#0EH,NK1 ;键码的值是多少?P0.4xP0.0
01AC 753503 MOV KEYBUF,#3
01AF 0201CE LJMP DK1
01B2 B40D06 NK1: CJNE A,#0DH,NK2 ;键码是P0.4xP0.1 ?
01B5 753502 MOV KEYBUF,#2
01B8 0201CE LJMP DK1
01BB B40B06 NK2: CJNE A,#0BH,NK3 ;键码是P0.4xP0.2 ?
01BE 753501 MOV KEYBUF,#1
01C1 0201CE LJMP DK1
01C4 B40706 NK3: CJNE A,#07H,NK4 ;键码是P0.4xP0.3 ?
01C7 753500 MOV KEYBUF,#0
01CA 0201CE LJMP DK1
01CD 00 NK4: NOP
DK1:
01CE E535 MOV A,KEYBUF
01D0 9002F1 MOV DPTR,#TAB
01D3 93 MOVC A,@A+DPTR ;查表,取键值
01D4 F539 MOV KEY,A
01D6 750001 MOV FLAG0,#1 ;FLAG0=1
01D9 E580 DK1A: MOV A,P0
01DB 540F ANL A,#0FH
01DD 640F XRL A,#0FH ;按键有没有松开?
01DF 70F8 JNZ DK1A
NOKEY1:
01E1 7580FF MOV P0,#0FFH
01E4 C285 CLR P0.5
01E6 E580 MOV A,P0
01E8 540F ANL A,#0FH
01EA 640F XRL A,#0FH
01EC 6047 JZ NOKEY2
01EE 1202E7 LCALL DELY10US
01F1 E580 MOV A,P0
01F3 540F ANL A,#0FH
01F5 640F XRL A,#0FH
01F7 603C JZ NOKEY2
01F9 E580 MOV A,P0
01FB 540F ANL A,#0FH
01FD B40E06 CJNE A,#0EH,NK5
0200 753507 MOV KEYBUF,#7
0203 020222 LJMP DK2
0206 B40D06 NK5: CJNE A,#0DH,NK6
0209 753506 MOV KEYBUF,#6
020C 020222 LJMP DK2
F:\个人文件\已调过的程序\LCD\NONAME1'.ASM
页 6
10-15-05
08:10:11
伟福汇编器 V5.00 Copyright (c) 1989, 99 by CHY
地址 机器码 源程序
020F B40B06 NK6: CJNE A,#0BH,NK7
0212 753505 MOV KEYBUF,#5
0215 020222 LJMP DK2
0218 B40706 NK7: CJNE A,#07H,NK8
021B 753504 MOV KEYBUF,#4
021E 020222 LJMP DK2
0221 00 NK8: NOP
DK2:
0222 E535 MOV A,KEYBUF
0224 9002F1 MOV DPTR,#TAB
0227 93 MOVC A,@A+DPTR
0228 F539 MOV KEY,A
022A 750001 MOV FLAG0,#1 ;FLAG0=1
022D E580 DK2A: MOV A,P0
022F 540F ANL A,#0FH
0231 640F XRL A,#0FH
0233 70F8 JNZ DK2A
NOKEY2:
0235 7580FF MOV P0,#0FFH
0238 C286 CLR P0.6
023A E580 MOV A,P0
023C 540F ANL A,#0FH
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -