📄 lcdshow.lis
字号:
01B8 E604 lda 4,X
01BA AB0A add #10
01BC B700 sta *__r1
01BE E603 lda 3,X
01C0 A900 adc #0
01C2 B700 sta *__r0
01C4 5500 ldhx *__r0
01C6 F6 lda ,x
01C7 87 psha
01C8 CD002D jsr _ChangeASCII
01CB A701 ais #1
01CD B700 sta *__r1
01CF A608 lda #8
01D1 87 psha
01D2 A602 lda #2
01D4 87 psha
01D5 B600 lda *__r1
01D7 87 psha
01D8 CD0000 jsr _LcdshowCharacter
01DB A703 ais #3
01DD 95 tsx
01DE ; LcdshowCharacter(ChangeASCII(temp[11]),2,9);
01DE E604 lda 4,X
01E0 AB0B add #11
01E2 B700 sta *__r1
01E4 E603 lda 3,X
01E6 A900 adc #0
01E8 B700 sta *__r0
01EA 5500 ldhx *__r0
01EC F6 lda ,x
01ED 87 psha
01EE CD002D jsr _ChangeASCII
01F1 A701 ais #1
01F3 B700 sta *__r1
01F5 A609 lda #9
01F7 87 psha
01F8 A602 lda #2
01FA 87 psha
01FB B600 lda *__r1
01FD 87 psha
01FE CD0000 jsr _LcdshowCharacter
0201 A703 ais #3
0203 ; LcdshowCharacter(':',2,10);
0203 A60A lda #10
0205 87 psha
0206 A602 lda #2
0208 87 psha
0209 A63A lda #58
020B 87 psha
020C CD0000 jsr _LcdshowCharacter
020F A703 ais #3
0211 95 tsx
0212 ; LcdshowCharacter(ChangeASCII(temp[12]),2,11);
0212 E604 lda 4,X
0214 AB0C add #12
0216 B700 sta *__r1
0218 E603 lda 3,X
021A A900 adc #0
021C B700 sta *__r0
021E 5500 ldhx *__r0
0220 F6 lda ,x
0221 87 psha
0222 CD002D jsr _ChangeASCII
0225 A701 ais #1
0227 B700 sta *__r1
0229 A60B lda #11
022B 87 psha
022C A602 lda #2
022E 87 psha
022F B600 lda *__r1
0231 87 psha
0232 CD0000 jsr _LcdshowCharacter
0235 A703 ais #3
0237 95 tsx
0238 ; LcdshowCharacter(ChangeASCII(temp[13]),2,12);
0238 E604 lda 4,X
023A AB0D add #13
023C B700 sta *__r1
023E E603 lda 3,X
0240 A900 adc #0
0242 B700 sta *__r0
0244 5500 ldhx *__r0
0246 F6 lda ,x
0247 87 psha
0248 CD002D jsr _ChangeASCII
024B A701 ais #1
024D B700 sta *__r1
024F A60C lda #12
0251 87 psha
0252 A602 lda #2
0254 87 psha
0255 B600 lda *__r1
0257 87 psha
0258 CD0000 jsr _LcdshowCharacter
025B A703 ais #3
025D 95 tsx
025E L8:
025E A701 ais #1
0260 .dbline 0 ; func end
0260 81 rts
0261 ; i -> 0,X
0261 _LcdInit::
0261 A7FF ais #-1
0263 95 tsx
0264 ;
0264 ; }
0264 ;
0264 ; /*LcdInit:初始化Lcd------------------------------------*
0264 ; *功 能:初始化Lcd(HD44780),设置显示方式,清屏,AC自动+1 *
0264 ; *参 数:无 *
0264 ; *返 回:无 *
0264 ; *-----------------------------------------------------*/
0264 ; void LcdInit(void)
0264 ; {
0264 ; unsigned char i;
0264 ; LcdData_D=0b11111111; //数据口为输出
0264 A6FF lda #-1
0266 B705 sta 0x5
0268 ; LcdCtrl_D|=(1<<LcdE); //控制口低三位为输出
0268 1406 bset #2,0x6
026A ; LcdCtrl_D|=(1<<LcdRS);
026A 1006 bset #0,0x6
026C ; LcdCtrl_D|=(1<<LcdRW);
026C 1206 bset #1,0x6
026E ; LcdCtrl|=(1<<LcdE); //E=1
026E 1402 bset #2,0x2
0270 ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
0270 1102 bclr #0,0x2
0272 ; LcdCtrl&=~(1<<LcdRW);
0272 1302 bclr #1,0x2
0274 ; Lcd_Command(0b00111000); //8位数据接口,2行,5*7点阵
0274 A638 lda #56
0276 87 psha
0277 CD02AB jsr _Lcd_Command
027A A701 ais #1
027C ; Lcd_Command(0b00001000); //关显示,关光标显示,不闪烁
027C A608 lda #8
027E 87 psha
027F CD02AB jsr _Lcd_Command
0282 A701 ais #1
0284 ; Lcd_Command(0b00000001); //清屏
0284 A601 lda #1
0286 87 psha
0287 CD02AB jsr _Lcd_Command
028A A701 ais #1
028C 95 tsx
028D 7F clr ,X
028E 2001 bra L17
0290 L14:
0290 L15:
0290 7C inc ,X
0291 L17:
0291 ; for(i=0;i<250;i++); //延时>1.6ms
0291 F6 lda ,X
0292 A1FA cmp #-6
0294 25FA blo L14
0296 7F clr ,X
0297 2001 bra L21
0299 L18:
0299 L19:
0299 7C inc ,X
029A L21:
029A ; for(i=0;i<250;i++);
029A F6 lda ,X
029B A1FA cmp #-6
029D 25FA blo L18
029F ; Lcd_Command(0b00001100); //开显示,关光标显示,不闪烁
029F A60C lda #12
02A1 87 psha
02A2 CD02AB jsr _Lcd_Command
02A5 A701 ais #1
02A7 95 tsx
02A8 L13:
02A8 A701 ais #1
02AA .dbline 0 ; func end
02AA 81 rts
02AB ; i -> 0,X
02AB ; cmd -> 3,X
02AB _Lcd_Command::
02AB A7FF ais #-1
02AD 95 tsx
02AE ; }
02AE ; /*Lcd_Command:执行给定的cmd命令------------------------*
02AE ; *功 能:执行给定的cmd命令,且延时 *
02AE ; *参 数:cmd:待执行的命令 *
02AE ; *返 回:无 *
02AE ; *-----------------------------------------------------*/
02AE ; void Lcd_Command(unsigned char cmd)
02AE ; {
02AE 7F clr ,X
02AF 2001 bra L26
02B1 L23:
02B1 L24:
02B1 7C inc ,X
02B2 L26:
02B2 ; unsigned char i;
02B2 ; for (i=0;i<20;i++); //等待>40us
02B2 F6 lda ,X
02B3 A114 cmp #20
02B5 25FA blo L23
02B7 ; LcdData=cmd; //把指令码送到Lcd数据传送口
02B7 E603 lda 3,X
02B9 B701 sta 0x1
02BB ; LcdCtrl|=(1<<LcdE); //Lcd开始接收数据
02BB 1402 bset #2,0x2
02BD ; asm("NOP");
02BD 9D NOP
02BE ; asm("NOP");
02BE 9D NOP
02BF ; asm("NOP");
02BF 9D NOP
02C0 ; LcdCtrl&=~(1<<LcdE); //Lcd结束接收数据
02C0 1502 bclr #2,0x2
02C2 7F clr ,X
02C3 2001 bra L30
02C5 L27:
02C5 L28:
02C5 7C inc ,X
02C6 L30:
02C6 ; for (i=0;i<20;i++); //等待>40us
02C6 F6 lda ,X
02C7 A114 cmp #20
02C9 25FA blo L27
02CB L22:
02CB A701 ais #1
02CD .dbline 0 ; func end
02CD 81 rts
02CE ; n -> 3,X
02CE ; m -> 2,X
02CE _LcdShowCursor::
02CE 95 tsx
02CF ; }
02CF ;
02CF ; void LcdShowCursor(unsigned char m,unsigned char n) //显示光标在第m行,第n列
02CF ; {
02CF ; LcdCtrl&=~(1<<LcdRS); //RS、R/W=00,写指令
02CF 1102 bclr #0,0x2
02D1 ; LcdCtrl&=~(1<<LcdRW);
02D1 1302 bclr #1,0x2
02D3 ; Lcd_Command(0b00001111);
02D3 A60F lda #15
02D5 87 psha
02D6 CD02AB jsr _Lcd_Command
02D9 A701 ais #1
02DB 95 tsx
02DC ; Lcd_Command(0b10000000|((m-1)*0x40+(n-1)));
02DC E603 lda 3,X
02DE A001 sub #1
02E0 B700 sta *__r0
02E2 E602 lda 2,X
02E4 A001 sub #1
02E6 62 nsa
02E7 A4F0 and #-16
02E9 48 lsla
02EA 48 lsla
02EB BB00 add *__r0
02ED AA80 ora #-128
02EF 87 psha
02F0 CD02AB jsr _Lcd_Command
02F3 A701 ais #1
02F5 95 tsx
02F6 L31:
02F6 .dbline 0 ; func end
02F6 81 rts
02F7 ; n -> 8,X
02F7 ; m -> 7,X
02F7 ; temp -> 5,X
02F7 ; Keyvalue -> 4,X
02F7 _Transmission::
02F7 A7FE ais #-2
02F9 95 tsx
02FA ; }
02FA ;
02FA ;
02FA ;
02FA ;
02FA ;
02FA ; /*void LcdShowMenu(void) //显示菜单
02FA ; {
02FA ; unsigned char temp[12]="1. Set Time";
02FA ; unsigned char temp2[13]="2. Set Alarm";
02FA ; unsigned char i;
02FA ; LcdInit();
02FA ; for(i=0;i<11;i++)
02FA ; {
02FA ; LcdshowCharacter(temp[i],1,(i+1));
02FA ; }
02FA ; for(i=0;i<12;i++)
02FA ; {
02FA ; LcdshowCharacter(temp2[i],2,(i+1));
02FA ; }
02FA ; }*/
02FA ;
02FA ; //将输入的键值传送到相应位置的位
02FA ; void Transmission(unsigned char Keyvalue,unsigned char temp[],unsigned char m,unsigned char n)
02FA ; {
02FA ; if(m==1) //在第一行
02FA E607 lda 7,X
02FC A101 cmp #1
02FE 2703 beq X16
0300 CC03FA jmp L33
0303 X16:
0303 ; {
0303 ; switch(n)
0303 7F clr ,X
0304 E608 lda 8,X
0306 E701 sta 1,X
0308 F6 lda ,X
0309 2606 bne X0
030B E601 lda 1,X
030D A104 cmp #4
030F 274E beq L38
0311 X0:
0311 F6 lda ,X
0312 2606 bne X1
0314 E601 lda 1,X
0316 A105 cmp #5
0318 2756 beq L39
031A X1:
031A F6 lda ,X
031B 2606 bne X2
031D E601 lda 1,X
031F A106 cmp #6
0321 2761 beq L40
0323 X2:
0323 F6 lda ,X
0324 2606 bne X3
0326 E601 lda 1,X
0328 A107 cmp #7
032A 276C beq L41
032C X3:
032C F6 lda ,X
032D 2609 bne X4
032F E601 lda 1,X
0331 A109 cmp #9
0333 2603 bne X17
0335 CC03AC jmp L42
0338 X17:
0338 X4:
0338 F6 lda ,X
0339 2609 bne X5
033B E601 lda 1,X
033D A10A cmp #10
033F 2603 bne X18
0341 CC03C0 jmp L43
0344 X18:
0344 X5:
0344 F6 lda ,X
0345 2609 bne X6
0347 E601 lda 1,X
0349 A10C cmp #12
034B 2603 bne X19
034D CC03D4 jmp L44
0350 X19:
0350 X6:
0350 F6 lda ,X
0351 2609 bne X7
0353 E601 lda 1,X
0355 A10D cmp #13
0357 2603 bne X20
0359 CC03E8 jmp L45
035C X20:
035C X7:
035C CC03FA jmp L35
035F X8:
035F ; {
035F L38:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -