⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcdshow.lis

📁 基于HC908GP32的时钟程序
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 0235 CD02F7            jsr _ChangeASCII
 0238 A701              ais #1
 023A B700              sta *__r1
 023C A606              lda #6
 023E 87                psha
 023F A602              lda #2
 0241 87                psha
 0242 B600              lda *__r1
 0244 87                psha
 0245 CD02CA            jsr _LcdshowCharacter
 0248 A703              ais #3
 024A           ;     LcdshowCharacter(':',2,7);
 024A A607              lda #7
 024C 87                psha
 024D A602              lda #2
 024F 87                psha
 0250 A63A              lda #58
 0252 87                psha
 0253 CD02CA            jsr _LcdshowCharacter
 0256 A703              ais #3
 0258           ;     LcdshowCharacter(ChangeASCII(alarm[10]),2,8);
 0258 B60A              lda *_alarm+10
 025A 87                psha
 025B CD02F7            jsr _ChangeASCII
 025E A701              ais #1
 0260 B700              sta *__r1
 0262 A608              lda #8
 0264 87                psha
 0265 A602              lda #2
 0267 87                psha
 0268 B600              lda *__r1
 026A 87                psha
 026B CD02CA            jsr _LcdshowCharacter
 026E A703              ais #3
 0270           ;     LcdshowCharacter(ChangeASCII(alarm[11]),2,9);
 0270 B60B              lda *_alarm+11
 0272 87                psha
 0273 CD02F7            jsr _ChangeASCII
 0276 A701              ais #1
 0278 B700              sta *__r1
 027A A609              lda #9
 027C 87                psha
 027D A602              lda #2
 027F 87                psha
 0280 B600              lda *__r1
 0282 87                psha
 0283 CD02CA            jsr _LcdshowCharacter
 0286 A703              ais #3
 0288           ;     LcdshowCharacter(':',2,10);
 0288 A60A              lda #10
 028A 87                psha
 028B A602              lda #2
 028D 87                psha
 028E A63A              lda #58
 0290 87                psha
 0291 CD02CA            jsr _LcdshowCharacter
 0294 A703              ais #3
 0296           ;     LcdshowCharacter(ChangeASCII(alarm[12]),2,11);
 0296 B60C              lda *_alarm+12
 0298 87                psha
 0299 CD02F7            jsr _ChangeASCII
 029C A701              ais #1
 029E B700              sta *__r1
 02A0 A60B              lda #11
 02A2 87                psha
 02A3 A602              lda #2
 02A5 87                psha
 02A6 B600              lda *__r1
 02A8 87                psha
 02A9 CD02CA            jsr _LcdshowCharacter
 02AC A703              ais #3
 02AE           ;     LcdshowCharacter(ChangeASCII(alarm[13]),2,12); 
 02AE B60D              lda *_alarm+13
 02B0 87                psha
 02B1 CD02F7            jsr _ChangeASCII
 02B4 A701              ais #1
 02B6 B700              sta *__r1
 02B8 A60C              lda #12
 02BA 87                psha
 02BB A602              lda #2
 02BD 87                psha
 02BE B600              lda *__r1
 02C0 87                psha
 02C1 CD02CA            jsr _LcdshowCharacter
 02C4 A703              ais #3
 02C6 95                tsx
 02C7           L16:
 02C7 A701              ais #1
 02C9                   .dbline 0 ; func end
 02C9 81                rts
 02CA           ;              n -> 4,X
 02CA           ;              m -> 3,X
 02CA           ;            str -> 2,X
 02CA           _LcdshowCharacter::
 02CA 95                tsx
 02CB           ;      
 02CB           ; }
 02CB           ; 
 02CB           ; /*LcdShow:在HD44780显示屏上显示一个字符--------------------*
 02CB           ; *功能描述:在HD44780显示屏上第m行,第n列显示字符str         *
 02CB           ; *参  数:str:待显示字符                                 *
 02CB           ; *返  回:无                                             *
 02CB           ; *------------------以上为子程序说明-------------------*/
 02CB           ; void LcdshowCharacter(unsigned char str,unsigned char m,unsigned char n)  
 02CB           ;   {           
 02CB           ;     
 02CB           ;     //LcdInit();
 02CB           ;       
 02CB           ;       LcdCtrl&=~(1<<LcdRS);      //RS、R/W=00,写指令
 02CB 1102              bclr #0,0x2
 02CD           ;       LcdCtrl&=~(1<<LcdRW);    
 02CD 1302              bclr #1,0x2
 02CF           ;       Lcd_Command(0b10000000|((m-1)*0x40+(n-1))); 
 02CF E604              lda 4,X
 02D1 A001              sub #1
 02D3 B700              sta *__r0
 02D5 E603              lda 3,X
 02D7 A001              sub #1
 02D9 62                nsa
 02DA A4F0              and #-16
 02DC 48                lsla
 02DD 48                lsla
 02DE BB00              add *__r0
 02E0 AA80              ora #-128
 02E2 87                psha
 02E3 CD0353            jsr _Lcd_Command
 02E6 A701              ais #1
 02E8 95                tsx
 02E9           ;       LcdCtrl|=1<<LcdRS;               //RS、R/W=10,写数据到DDRAM中
 02E9 1002              bset #0,0x2
 02EB           ;     LcdCtrl&=~(1<<LcdRW);
 02EB 1302              bclr #1,0x2
 02ED           ;       Lcd_Command(str);
 02ED E602              lda 2,X
 02EF 87                psha
 02F0 CD0353            jsr _Lcd_Command
 02F3 A701              ais #1
 02F5 95                tsx
 02F6           L31:
 02F6                   .dbline 0 ; func end
 02F6 81                rts
 02F7           ;              y -> 0,X
 02F7           ;              x -> 3,X
 02F7           _ChangeASCII::
 02F7 A7FF              ais #-1
 02F9 95                tsx
 02FA           ;    
 02FA           ;    }
 02FA           ; 
 02FA           ; unsigned char ChangeASCII(unsigned char x)   //转换数值x为对应的ASCII码
 02FA           ; {
 02FA           ;     unsigned char y;
 02FA           ;     return y=x+0x30;
 02FA E603              lda 3,X
 02FC AB30              add #48
 02FE B700              sta *__r1
 0300 F7                sta ,X
 0301 4E0000            mov *__r1,*__r0
 0304 B600              lda *__r1
 0306           L32:
 0306 A701              ais #1
 0308                   .dbline 0 ; func end
 0308 81                rts
 0309           ;              i -> 0,X
 0309           _LcdInit::
 0309 A7FF              ais #-1
 030B 95                tsx
 030C           ; }
 030C           ; 
 030C           ;    
 030C           ; /*LcdInit:初始化Lcd------------------------------------*
 030C           ; *功  能:初始化Lcd(HD44780),设置显示方式,清屏,AC自动+1  *
 030C           ; *参  数:无                                             *
 030C           ; *返  回:无                                             *
 030C           ; *-----------------------------------------------------*/
 030C           ; void LcdInit(void)
 030C           ;   {
 030C           ;     unsigned char i;
 030C           ;     LcdData_D=0b11111111;     //数据口为输出
 030C A6FF              lda #-1
 030E B705              sta 0x5
 0310           ;     LcdCtrl_D|=(1<<LcdE);     //控制口低三位为输出
 0310 1406              bset #2,0x6
 0312           ;     LcdCtrl_D|=(1<<LcdRS); 
 0312 1006              bset #0,0x6
 0314           ;     LcdCtrl_D|=(1<<LcdRW); 
 0314 1206              bset #1,0x6
 0316           ;     LcdCtrl|=(1<<LcdE);       //E=1
 0316 1402              bset #2,0x2
 0318           ;     LcdCtrl&=~(1<<LcdRS);     //RS、R/W=00,写指令
 0318 1102              bclr #0,0x2
 031A           ;     LcdCtrl&=~(1<<LcdRW);    
 031A 1302              bclr #1,0x2
 031C           ;     Lcd_Command(0b00111000);  //8位数据接口,2行,5*7点阵
 031C A638              lda #56
 031E 87                psha
 031F CD0353            jsr _Lcd_Command
 0322 A701              ais #1
 0324           ;     Lcd_Command(0b00001000);  //关显示,关光标显示,不闪烁      
 0324 A608              lda #8
 0326 87                psha
 0327 CD0353            jsr _Lcd_Command
 032A A701              ais #1
 032C           ;     Lcd_Command(0b00000001);  //清屏
 032C A601              lda #1
 032E 87                psha
 032F CD0353            jsr _Lcd_Command
 0332 A701              ais #1
 0334 95                tsx
 0335 7F                clr ,X
 0336 2001              bra L37
 0338           L34:
 0338           L35:
 0338 7C                inc ,X
 0339           L37:
 0339           ;     for(i=0;i<250;i++);       //延时>1.6ms
 0339 F6                lda ,X
 033A A1FA              cmp #-6
 033C 25FA              blo L34
 033E 7F                clr ,X
 033F 2001              bra L41
 0341           L38:
 0341           L39:
 0341 7C                inc ,X
 0342           L41:
 0342           ;     for(i=0;i<250;i++); 
 0342 F6                lda ,X
 0343 A1FA              cmp #-6
 0345 25FA              blo L38
 0347           ;     //Lcd_Command(0b00010100);  //光标右移一个字符位,AC自
 0347           ;                               //  动加1
 0347           ;     Lcd_Command(0b00001100);  //开显示,关光标显示,不闪烁
 0347 A60C              lda #12
 0349 87                psha
 034A CD0353            jsr _Lcd_Command
 034D A701              ais #1
 034F 95                tsx
 0350           L33:
 0350 A701              ais #1
 0352                   .dbline 0 ; func end
 0352 81                rts
 0353           ;              i -> 0,X
 0353           ;            cmd -> 3,X
 0353           _Lcd_Command::
 0353 A7FF              ais #-1
 0355 95                tsx
 0356           ;   }
 0356           ; /*Lcd_Command:执行给定的cmd命令------------------------*
 0356           ; *功  能:执行给定的cmd命令,且延时                       *
 0356           ; *参  数:cmd:待执行的命令                               *
 0356           ; *返  回:无                                             *
 0356           ; *-----------------------------------------------------*/
 0356           ; void Lcd_Command(unsigned char cmd)
 0356           ;   {           
 0356 7F                clr ,X
 0357 2001              bra L46
 0359           L43:
 0359           L44:
 0359 7C                inc ,X
 035A           L46:
 035A           ;     unsigned char i;	 
 035A           ;     for (i=0;i<20;i++);    //等待>40us
 035A F6                lda ,X
 035B A114              cmp #20
 035D 25FA              blo L43
 035F           ;     LcdData=cmd;               //把指令码送到Lcd数据传送口
 035F E603              lda 3,X
 0361 B701              sta 0x1
 0363           ;     LcdCtrl|=(1<<LcdE);    //Lcd开始接收数据
 0363 1402              bset #2,0x2
 0365           ;     asm("NOP");
 0365 9D                NOP
 0366           ;     asm("NOP");
 0366 9D                NOP
 0367           ;     asm("NOP");
 0367 9D                NOP
 0368           ;     LcdCtrl&=~(1<<LcdE);   //Lcd结束接收数据
 0368 1502              bclr #2,0x2
 036A 7F                clr ,X
 036B 2001              bra L50
 036D           L47:
 036D           L48:
 036D 7C                inc ,X
 036E           L50:
 036E           ;     for (i=0;i<20;i++);    //等待>40us
 036E F6                lda ,X
 036F A114              cmp #20
 0371 25FA              blo L47
 0373           L42:
 0373 A701              ais #1
 0375                   .dbline 0 ; func end
 0375 81                rts
 0376           ;              n -> 3,X
 0376           ;              m -> 2,X
 0376           _MoveCursor::
 0376 95                tsx
 0377           ;   }
 0377           ;   
 0377           ; void MoveCursor(unsigned char m,unsigned char n)    //移到光标到第m行,第n列
 0377           ; {
 0377           ;    LcdCtrl&=~(1<<LcdRS);     //RS、R/W=00,写指令
 0377 1102              bclr #0,0x2
 0379           ;    LcdCtrl&=~(1<<LcdRW);
 0379 1302              bclr #1,0x2
 037B           ;    Lcd_Command(0b00001111); 
 037B A60F              lda #15
 037D 87                psha
 037E CD0353            jsr _Lcd_Command
 0381 A701              ais #1
 0383 95                tsx
 0384           ;    Lcd_Command(0b10000000|((m-1)*0x40+(n-1)));
 0384 E603              lda 3,X
 0386 A001              sub #1
 0388 B700              sta *__r0
 038A E602              lda 2,X
 038C A001              sub #1
 038E 62                nsa
 038F A4F0              and #-16
 0391 48                lsla
 0392 48                lsla
 0393 BB00              add *__r0
 0395 AA80              ora #-128
 0397 87                psha
 0398 CD0353            jsr _Lcd_Command
 039B A701              ais #1
 039D 95                tsx
 039E           L51:
 039E                   .dbline 0 ; func end
 039E 81                rts
 039F           _LcdShowCursor::
 039F           ;    //Lcd_Command(0b00001111);
 039F           ; }
 039F           ; 
 039F           ; 
 039F           ; void LcdShowCursor(void)     //开光标显示,闪烁
 039F           ; {
 039F           ;    LcdCtrl&=~(1<<LcdRS);     //RS、R/W=00,写指令
 039F 1102              bclr #0,0x2
 03A1           ;    LcdCtrl&=~(1<<LcdRW); 
 03A1 1302              bclr #1,0x2
 03A3           ;    Lcd_Command(0b00001111); 
 03A3 A60F              lda #15
 03A5 87                psha
 03A6 CD0353            jsr _Lcd_Command
 03A9 A701              ais #1
 03AB 95                tsx
 03AC           L52:
 03AC                   .dbline 0 ; func end
 03AC 81                rts
                        .area lit
 0000           L54:
 0000 312E205365742054696D6500  .byte 49,46,32,'S,'e,'t,32,'T,'i,'m,'e,0
 000C           L55:
 000C 322E2053657420416C61726D00        .byte 50,46,32,'S,'e,'t,32,'A,'l,'a,'r,'m,0
                        .area text
                ;          temp2 -> 0,X
                ;           temp -> 13,X
                ;              i -> 25,X
 03AD           _LcdShowMenu::
 03AD A7E6              ais #-26
 03AF 95                tsx
 03B0           ; }
 03B0           ; 
 03B0           ; void LcdShowMenu(void)    //显示菜单
 03B0           ; {  
 03B0           ;    
 03B0           ;    unsigned char temp[12]="1. Set Time";
 03B0 AF0D              aix #13
 03B2 3500              sthx *__r0
 03B4 95                tsx
 03B5 A60C              lda #12
 03B7 87                psha
 03B8 4F                clra
 03B9 87                psha
 03BA A600              lda #<L54
 03BC 87                psha
 03BD A600              lda #>L54
 03BF 87                psha
 03C0 B600              lda *__r1
 03C2 87                psha
 03C3 B600              lda *__r0
 03C5 87                psha
 03C6 CD0000            jsr __asgnblk
 03C9 A706              ais #6
 03CB           ;    unsigned char temp2[13]="2. Set Alarm";
 03CB 3500              sthx *__r0
 03CD A60D              lda #13
 03CF 87                psha
 03D0 4F                clra
 03D1 87                psha
 03D2 A60C              lda #<L55
 03D4 87                psha
 03D5 A60C              lda #>L55
 03D7 87                psha
 03D8 B600              lda *__r1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -