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

📄 lcdshow.lis

📁 摩托罗拉的时钟的原代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -