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

📄 lcdshow.lis

📁 可以显示年月日,时间等,也可以设置闹钟,设定时间
💻 LIS
📖 第 1 页 / 共 3 页
字号:
 0126           ;    
 0126           ; /*LcdInit:初始化Lcd------------------------------------*
 0126           ; *功  能:初始化Lcd(HD44780),设置显示方式,清屏,AC自动+1  *
 0126           ; *参  数:无                                             *
 0126           ; *返  回:无                                             *
 0126           ; *-----------------------------------------------------*/
 0126           ; 
 0126           ; void LcdInit(void)
 0126           ;   {
 0126           ;     unsigned char i;
 0126           ;     LcdData_D=0b11111111;     //数据口为输出
 0126 A6FF              lda #-1
 0128 B705              sta 0x5
 012A           ;     LcdCtrl_D|=(1<<LcdE);     //控制口低三位为输出
 012A 1406              bset #2,0x6
 012C           ;     LcdCtrl_D|=(1<<LcdRS); 
 012C 1006              bset #0,0x6
 012E           ;     LcdCtrl_D|=(1<<LcdRW); 
 012E 1206              bset #1,0x6
 0130           ;     LcdCtrl|=(1<<LcdE);       //E=1
 0130 1402              bset #2,0x2
 0132           ;     LcdCtrl&=~(1<<LcdRS);     //RS、R/W=00,写指令
 0132 1102              bclr #0,0x2
 0134           ;     LcdCtrl&=~(1<<LcdRW);    
 0134 1302              bclr #1,0x2
 0136           ;     Lcd_Command(0b00111000);  //8位数据接口,2行,5*7点阵
 0136 A638              lda #56
 0138 87                psha
 0139 CD0175            jsr _Lcd_Command
 013C A701              ais #1
 013E           ;     Lcd_Command(0b00001000);  //关显示,关光标显示,不闪烁      
 013E A608              lda #8
 0140 87                psha
 0141 CD0175            jsr _Lcd_Command
 0144 A701              ais #1
 0146           ;     Lcd_Command(0b00000001);  //清屏
 0146 A601              lda #1
 0148 87                psha
 0149 CD0175            jsr _Lcd_Command
 014C A701              ais #1
 014E 95                tsx
 014F 7F                clr ,X
 0150 2001              bra L25
 0152           L22:
 0152           L23:
 0152 7C                inc ,X
 0153           L25:
 0153           ;     for(i=0;i<250;i++);       //延时>1.6ms
 0153 F6                lda ,X
 0154 A1FA              cmp #-6
 0156 25FA              blo L22
 0158 7F                clr ,X
 0159 2001              bra L29
 015B           L26:
 015B           L27:
 015B 7C                inc ,X
 015C           L29:
 015C           ;     for(i=0;i<250;i++); 
 015C F6                lda ,X
 015D A1FA              cmp #-6
 015F 25FA              blo L26
 0161           ;     Lcd_Command(0b00010100);  //光标右移一个字符位,AC自
 0161 A614              lda #20
 0163 87                psha
 0164 CD0175            jsr _Lcd_Command
 0167 A701              ais #1
 0169           ;                               //  动加1  (是否错误?)
 0169           ;     Lcd_Command(0b00001100);  //开显示,关光标显示,不闪烁
 0169 A60C              lda #12
 016B 87                psha
 016C CD0175            jsr _Lcd_Command
 016F A701              ais #1
 0171 95                tsx
 0172           L21:
 0172 A701              ais #1
 0174                   .dbline 0 ; func end
 0174 81                rts
 0175           ;              i -> 0,X
 0175           ;            cmd -> 3,X
 0175           _Lcd_Command::
 0175 A7FF              ais #-1
 0177 95                tsx
 0178           ;   }
 0178           ; /*Lcd_Command:执行给定的cmd命令------------------------*
 0178           ; *功  能:执行给定的cmd命令,且延时                       *
 0178           ; *参  数:cmd:待执行的命令                               *
 0178           ; *返  回:无                                             *
 0178           ; *-----------------------------------------------------*/
 0178           ; void Lcd_Command(unsigned char cmd)
 0178           ;   {           
 0178 7F                clr ,X
 0179 2001              bra L34
 017B           L31:
 017B           L32:
 017B 7C                inc ,X
 017C           L34:
 017C           ;     unsigned char i;	 
 017C           ;     for (i=0;i<20;i++);    //等待>40us
 017C F6                lda ,X
 017D A114              cmp #20
 017F 25FA              blo L31
 0181           ;     LcdData=cmd;               //把指令码送到Lcd数据传送口
 0181 E603              lda 3,X
 0183 B701              sta 0x1
 0185           ;     LcdCtrl|=(1<<LcdE);    //Lcd开始接收数据
 0185 1402              bset #2,0x2
 0187           ;     asm("NOP");
 0187 9D                NOP
 0188           ;     asm("NOP");
 0188 9D                NOP
 0189           ;     asm("NOP");
 0189 9D                NOP
 018A           ;     LcdCtrl&=~(1<<LcdE);   //Lcd结束接收数据
 018A 1502              bclr #2,0x2
 018C 7F                clr ,X
 018D 2001              bra L38
 018F           L35:
 018F           L36:
 018F 7C                inc ,X
 0190           L38:
 0190           ;     for (i=0;i<20;i++);    //等待>40us
 0190 F6                lda ,X
 0191 A114              cmp #20
 0193 25FA              blo L35
 0195           L30:
 0195 A701              ais #1
 0197                   .dbline 0 ; func end
 0197 81                rts
 0198           _left::
 0198           ;   }
 0198           ; 
 0198           ;   
 0198           ;    
 0198           ; void left(void)     ////进入左移时间模式
 0198           ; { 
 0198           ; 
 0198           ;  if(flat>10)
 0198 B600              lda *_flat
 019A A10A              cmp #10
 019C 2311              bls L40
 019E           ;   { 
 019E           ;     flat--;
 019E 3A00              dec *_flat
 01A0           ;     LcdCtrl&=~(1<<LcdRS);      //RS、R/W=00,写指令
 01A0 1102              bclr #0,0x2
 01A2           ;     LcdCtrl&=~(1<<LcdRW);    
 01A2 1302              bclr #1,0x2
 01A4           ;     Lcd_Command(0b00010000);   //后7位为DDRAM地址0x10
 01A4 A610              lda #16
 01A6 87                psha
 01A7 CD0175            jsr _Lcd_Command
 01AA A701              ais #1
 01AC 95                tsx
 01AD           ;    
 01AD           ;   }  
 01AD 202C              bra L41
 01AF           L40:
 01AF           ;   else if(flat==10)
 01AF B600              lda *_flat
 01B1 A10A              cmp #10
 01B3 2611              bne L42
 01B5           ;    { 
 01B5           ;     flat--;
 01B5 3A00              dec *_flat
 01B7           ;     LcdCtrl&=~(1<<LcdRS);      //RS、R/W=00,写指令
 01B7 1102              bclr #0,0x2
 01B9           ;     LcdCtrl&=~(1<<LcdRW);    
 01B9 1302              bclr #1,0x2
 01BB           ;     Lcd_Command(0b10001100);  //后7位为DDRAM地址0x4c
 01BB A68C              lda #-116
 01BD 87                psha
 01BE CD0175            jsr _Lcd_Command
 01C1 A701              ais #1
 01C3 95                tsx
 01C4           ;    }
 01C4 2015              bra L43
 01C6           L42:
 01C6           ;    else if(flat>0)
 01C6 B600              lda *_flat
 01C8 A100              cmp #0
 01CA 230F              bls L44
 01CC           ;      {
 01CC           ;         flat--;
 01CC 3A00              dec *_flat
 01CE           ;         LcdCtrl&=~(1<<LcdRS);      //RS、R/W=00,写指令
 01CE 1102              bclr #0,0x2
 01D0           ;         LcdCtrl&=~(1<<LcdRW);    
 01D0 1302              bclr #1,0x2
 01D2           ;        Lcd_Command(0b00010000);  //后7位为DDRAM地址0x10
 01D2 A610              lda #16
 01D4 87                psha
 01D5 CD0175            jsr _Lcd_Command
 01D8 A701              ais #1
 01DA 95                tsx
 01DB           ;      }
 01DB           L44:
 01DB           L43:
 01DB           L41:
 01DB           ;    Lcd_Command(0b00001111);  //开显示,开光标显示,闪烁
 01DB A60F              lda #15
 01DD 87                psha
 01DE CD0175            jsr _Lcd_Command
 01E1 A701              ais #1
 01E3 95                tsx
 01E4           L39:
 01E4                   .dbline 0 ; func end
 01E4 81                rts
 01E5           _right::
 01E5           ; }
 01E5           ; void right(void)      ////进入右移时间模式
 01E5           ; { 
 01E5           ;   if(flat<9)
 01E5 B600              lda *_flat
 01E7 A109              cmp #9
 01E9 2411              bhs L47
 01EB           ;   { 
 01EB           ;     flat++;
 01EB 3C00              inc *_flat
 01ED           ;     LcdCtrl&=~(1<<LcdRS);      //RS、R/W=00,写指令
 01ED 1102              bclr #0,0x2
 01EF           ;     LcdCtrl&=~(1<<LcdRW);    
 01EF 1302              bclr #1,0x2
 01F1           ;     Lcd_Command(0b00010100);   //
 01F1 A614              lda #20
 01F3 87                psha
 01F4 CD0175            jsr _Lcd_Command
 01F7 A701              ais #1
 01F9 95                tsx
 01FA           ;    
 01FA           ;   }  
 01FA 202C              bra L48
 01FC           L47:
 01FC           ;   else if(flat==9)
 01FC B600              lda *_flat
 01FE A109              cmp #9
 0200 2611              bne L49
 0202           ;    { 
 0202           ;     flat++;
 0202 3C00              inc *_flat
 0204           ;     LcdCtrl&=~(1<<LcdRS);      //RS、R/W=00,写指令
 0204 1102              bclr #0,0x2
 0206           ;     LcdCtrl&=~(1<<LcdRW);    
 0206 1302              bclr #1,0x2
 0208           ;     Lcd_Command(0b11000100);  //后7位为DDRAM地址0x44
 0208 A6C4              lda #-60
 020A 87                psha
 020B CD0175            jsr _Lcd_Command
 020E A701              ais #1
 0210 95                tsx
 0211           ;    }
 0211 2015              bra L50
 0213           L49:
 0213           ;    else if(flat<17)
 0213 B600              lda *_flat
 0215 A111              cmp #17
 0217 240F              bhs L51
 0219           ;      {
 0219           ;         flat++;
 0219 3C00              inc *_flat
 021B           ;         LcdCtrl&=~(1<<LcdRS);      //RS、R/W=00,写指令
 021B 1102              bclr #0,0x2
 021D           ;         LcdCtrl&=~(1<<LcdRW);    
 021D 1302              bclr #1,0x2
 021F           ;        Lcd_Command(0b00010100);  //后7位为DDRAM地址0x03
 021F A614              lda #20
 0221 87                psha
 0222 CD0175            jsr _Lcd_Command
 0225 A701              ais #1
 0227 95                tsx
 0228           ;      }
 0228           L51:
 0228           L50:
 0228           L48:
 0228           L46:
 0228                   .dbline 0 ; func end
 0228 81                rts
 0229           ;              i -> 0,X
 0229           ;              j -> 1,X
 0229           _down::
 0229 A7FE              ais #-2
 022B 95                tsx
 022C           ;    
 022C           ; } 
 022C           ;   
 022C           ; void down(void)      ////进入左移时间模
 022C           ; {
 022C           ;     unsigned char i,j;
 022C           ;     j=flat;
 022C B600              lda *_flat
 022E E701              sta 1,X
 0230           ;    i=(unsigned char)datestr[j]-0x30;
 0230 3F00              clr *__r0
 0232 AB00              add #<_datestr
 0234 B700              sta *__r1
 0236 B600              lda *__r0
 0238 A900              adc #>_datestr
 023A B700              sta *__r0
 023C 5500              ldhx *__r0
 023E F6                lda ,x
 023F 95                tsx
 0240 A030              sub #48
 0242 F7                sta ,X
 0243           ;     i++;
 0243 7C                inc ,X

⌨️ 快捷键说明

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