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

📄 lcdshow.lis

📁 摩托罗拉的时钟的原代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module LCDShow.c
                        .area text
                ;              n -> 4,X
                ;              m -> 3,X
                ;            str -> 2,X
 0000           _LcdshowCharacter::
 0000 95                tsx
 0001           ; /*文件描述:本文件包含了用HD44780显示相关的3个子程序    *
 0001           ; *         1. LCDShow:在LCD上显示32个字符               *
 0001           ; *         2. LcdInit:初始化Lcd                         *
 0001           ; *         3. Lcd_Command:执行给定的cmd命令             *
 0001           ; *-------------《嵌入式应用技术基础教程》--------------*/
 0001           ; //[以下为子程序源代码]
 0001           ; //[头文件]
 0001           ; #include "GP32C.h"         //包含头文件
 0001           ; 
 0001           ; #define LcdData PTB        //Lcd显示数据传送口
 0001           ; #define LcdData_D  DDRB    //数据口方向寄存器
 0001           ; #define LcdCtrl PTC        //Lcd控制信号传送口
 0001           ; #define LcdCtrl_D  DDRC    //控制口方向寄存器
 0001           ; #define  LcdRS 0           //Lcd寄存器选择信号PTC0
 0001           ; #define  LcdRW 1           //读写信号接PTC1
 0001           ; #define  LcdE  2           //Lcd使能信号接PTC2
 0001           ; 
 0001           ; //内部调用子程序
 0001           ; void Lcd_Command(unsigned char cmd);          //命令执行子程序
 0001           ; void LcdInit(void);                           //Lcd初始化子程序
 0001           ;   //在HD44780显示屏上显示一个字符子函数
 0001           ; void LcdshowCharacter(unsigned char str,unsigned char m,unsigned char n); 
 0001           ; unsigned char ChangeASCII(unsigned char x);   //转换数值x为对应的ASCII码子函数
 0001           ; //外部变量
 0001           ; extern unsigned char time[14];
 0001           ; extern unsigned char alarm[14];
 0001           ; extern unsigned char Ttime[3];
 0001           ; extern int Tdate[3];
 0001           ; extern unsigned char Ttime2[3];
 0001           ; extern int Tdate2[3];
 0001           ; 
 0001           ; 
 0001           ; 
 0001           ; 
 0001           ; 
 0001           ; /*LcdshowCharacter:在HD44780显示屏上显示一个字符--------------------*
 0001           ; *功能描述:在HD44780显示屏上第m行,第n列显示字符str         *
 0001           ; *参  数:str:待显示字符                                 *
 0001           ; *返  回:无                                             *
 0001           ; *------------------以上为子程序说明-------------------*/
 0001           ; void LcdshowCharacter(unsigned char str,unsigned char m,unsigned char n)  
 0001           ;   {           
 0001           ;       LcdCtrl&=~(1<<LcdRS);      //RS、R/W=00,写指令
 0001 1102              bclr #0,0x2
 0003           ;       LcdCtrl&=~(1<<LcdRW);    
 0003 1302              bclr #1,0x2
 0005           ;       Lcd_Command(0b10000000|((m-1)*0x40+(n-1))); 
 0005 E604              lda 4,X
 0007 A001              sub #1
 0009 B700              sta *__r0
 000B E603              lda 3,X
 000D A001              sub #1
 000F 62                nsa
 0010 A4F0              and #-16
 0012 48                lsla
 0013 48                lsla
 0014 BB00              add *__r0
 0016 AA80              ora #-128
 0018 87                psha
 0019 CD02AB            jsr _Lcd_Command
 001C A701              ais #1
 001E 95                tsx
 001F           ;       LcdCtrl|=1<<LcdRS;               //RS、R/W=10,写数据到DDRAM中
 001F 1002              bset #0,0x2
 0021           ;     LcdCtrl&=~(1<<LcdRW);
 0021 1302              bclr #1,0x2
 0023           ;       Lcd_Command(str);
 0023 E602              lda 2,X
 0025 87                psha
 0026 CD02AB            jsr _Lcd_Command
 0029 A701              ais #1
 002B 95                tsx
 002C           L1:
 002C                   .dbline 0 ; func end
 002C 81                rts
 002D           ;              y -> 0,X
 002D           ;              x -> 3,X
 002D           _ChangeASCII::
 002D A7FF              ais #-1
 002F 95                tsx
 0030           ;    }
 0030           ; 
 0030           ; unsigned char ChangeASCII(unsigned char x)   //转换数值x为对应的ASCII码
 0030           ; {
 0030           ;     unsigned char y;
 0030           ;     return y=x+0x30;
 0030 E603              lda 3,X
 0032 AB30              add #48
 0034 B700              sta *__r1
 0036 F7                sta ,X
 0037 4E0000            mov *__r1,*__r0
 003A B600              lda *__r1
 003C           L2:
 003C A701              ais #1
 003E                   .dbline 0 ; func end
 003E 81                rts
 003F           ;              i -> 0,X
 003F           ;              m -> 6,X
 003F           ;              n -> 5,X
 003F           ;            str -> 3,X
 003F           _LcdShowString::
 003F A7FF              ais #-1
 0041 95                tsx
 0042           ; }
 0042           ; 
 0042           ; //显示大小为n字符数组在第m行的子函数
 0042           ; void LcdShowString(unsigned char str[],unsigned char n,unsigned char m)  
 0042           ; {
 0042           ;    unsigned char i;
 0042           ;    LcdInit();
 0042 CD0261            jsr _LcdInit
 0045 95                tsx
 0046           ;    for(i=0;i<n;i++)
 0046 7F                clr ,X
 0047 201F              bra L7
 0049           L4:
 0049 F6                lda ,X
 004A AB01              add #1
 004C 87                psha
 004D E606              lda 6,X
 004F 87                psha
 0050 3F00              clr *__r0
 0052 F6                lda ,X
 0053 EB04              add 4,X
 0055 B700              sta *__r1
 0057 B600              lda *__r0
 0059 E903              adc 3,X
 005B B700              sta *__r0
 005D 5500              ldhx *__r0
 005F F6                lda ,x
 0060 87                psha
 0061 CD0000            jsr _LcdshowCharacter
 0064 A703              ais #3
 0066 95                tsx
 0067           L5:
 0067 7C                inc ,X
 0068           L7:
 0068 F6                lda ,X
 0069 E105              cmp 5,X
 006B 25DC              blo L4
 006D           L3:
 006D A701              ais #1
 006F                   .dbline 0 ; func end
 006F 81                rts
 0070           ;              i -> 0,X
 0070           ;           temp -> 3,X
 0070           _Lcdshow::
 0070 A7FF              ais #-1
 0072 95                tsx
 0073           ;     {
 0073           ;       LcdshowCharacter(str[i],m,(i+1));
 0073           ;     }
 0073           ; }
 0073           ; 
 0073           ; 
 0073           ; 
 0073           ; void Lcdshow(unsigned char temp[])             //显示日期时间子程序
 0073           ; {   unsigned char i;
 0073           ;     LcdInit();
 0073 CD0261            jsr _LcdInit
 0076 95                tsx
 0077           ;     for(i=0;i<4;i++)
 0077 7F                clr ,X
 0078 202A              bra L12
 007A           L9:
 007A 3F00              clr *__r0
 007C F6                lda ,X
 007D EB04              add 4,X
 007F B700              sta *__r1
 0081 B600              lda *__r0
 0083 E903              adc 3,X
 0085 B700              sta *__r0
 0087 5500              ldhx *__r0
 0089 F6                lda ,x
 008A 87                psha
 008B CD002D            jsr _ChangeASCII
 008E A701              ais #1
 0090 95                tsx
 0091 B700              sta *__r1
 0093 F6                lda ,X
 0094 AB04              add #4
 0096 87                psha
 0097 A601              lda #1
 0099 87                psha
 009A B600              lda *__r1
 009C 87                psha
 009D CD0000            jsr _LcdshowCharacter
 00A0 A703              ais #3
 00A2 95                tsx
 00A3           L10:
 00A3 7C                inc ,X
 00A4           L12:
 00A4 F6                lda ,X
 00A5 A104              cmp #4
 00A7 25D1              blo L9
 00A9           ;      {
 00A9           ;        LcdshowCharacter(ChangeASCII(temp[i]),1,(i+4));
 00A9           ;      }
 00A9           ;    
 00A9           ;     LcdshowCharacter('-',1,8);
 00A9 A608              lda #8
 00AB 87                psha
 00AC A601              lda #1
 00AE 87                psha
 00AF A62D              lda #45
 00B1 87                psha
 00B2 CD0000            jsr _LcdshowCharacter
 00B5 A703              ais #3
 00B7 95                tsx
 00B8           ;     LcdshowCharacter(ChangeASCII(temp[4]),1,9);
 00B8 E604              lda 4,X
 00BA AB04              add #4
 00BC B700              sta *__r1
 00BE E603              lda 3,X
 00C0 A900              adc #0
 00C2 B700              sta *__r0
 00C4 5500              ldhx *__r0
 00C6 F6                lda ,x
 00C7 87                psha
 00C8 CD002D            jsr _ChangeASCII
 00CB A701              ais #1
 00CD B700              sta *__r1
 00CF A609              lda #9
 00D1 87                psha
 00D2 A601              lda #1
 00D4 87                psha
 00D5 B600              lda *__r1
 00D7 87                psha
 00D8 CD0000            jsr _LcdshowCharacter
 00DB A703              ais #3
 00DD 95                tsx
 00DE           ;     LcdshowCharacter(ChangeASCII(temp[5]),1,10);
 00DE E604              lda 4,X
 00E0 AB05              add #5
 00E2 B700              sta *__r1
 00E4 E603              lda 3,X
 00E6 A900              adc #0
 00E8 B700              sta *__r0
 00EA 5500              ldhx *__r0
 00EC F6                lda ,x
 00ED 87                psha
 00EE CD002D            jsr _ChangeASCII
 00F1 A701              ais #1
 00F3 B700              sta *__r1
 00F5 A60A              lda #10
 00F7 87                psha
 00F8 A601              lda #1
 00FA 87                psha
 00FB B600              lda *__r1
 00FD 87                psha
 00FE CD0000            jsr _LcdshowCharacter
 0101 A703              ais #3
 0103           ;     LcdshowCharacter('-',1,11);
 0103 A60B              lda #11
 0105 87                psha
 0106 A601              lda #1
 0108 87                psha
 0109 A62D              lda #45
 010B 87                psha
 010C CD0000            jsr _LcdshowCharacter
 010F A703              ais #3
 0111 95                tsx
 0112           ;     LcdshowCharacter(ChangeASCII(temp[6]),1,12);
 0112 E604              lda 4,X
 0114 AB06              add #6
 0116 B700              sta *__r1
 0118 E603              lda 3,X
 011A A900              adc #0
 011C B700              sta *__r0
 011E 5500              ldhx *__r0
 0120 F6                lda ,x
 0121 87                psha
 0122 CD002D            jsr _ChangeASCII
 0125 A701              ais #1
 0127 B700              sta *__r1
 0129 A60C              lda #12
 012B 87                psha
 012C A601              lda #1
 012E 87                psha
 012F B600              lda *__r1
 0131 87                psha
 0132 CD0000            jsr _LcdshowCharacter
 0135 A703              ais #3
 0137 95                tsx
 0138           ;     LcdshowCharacter(ChangeASCII(temp[7]),1,13);
 0138 E604              lda 4,X
 013A AB07              add #7
 013C B700              sta *__r1
 013E E603              lda 3,X
 0140 A900              adc #0
 0142 B700              sta *__r0
 0144 5500              ldhx *__r0
 0146 F6                lda ,x
 0147 87                psha
 0148 CD002D            jsr _ChangeASCII
 014B A701              ais #1
 014D B700              sta *__r1
 014F A60D              lda #13
 0151 87                psha
 0152 A601              lda #1
 0154 87                psha
 0155 B600              lda *__r1
 0157 87                psha
 0158 CD0000            jsr _LcdshowCharacter
 015B A703              ais #3
 015D 95                tsx
 015E           ;     LcdshowCharacter(ChangeASCII(temp[8]),2,5);
 015E E604              lda 4,X
 0160 AB08              add #8
 0162 B700              sta *__r1
 0164 E603              lda 3,X
 0166 A900              adc #0
 0168 B700              sta *__r0
 016A 5500              ldhx *__r0
 016C F6                lda ,x
 016D 87                psha
 016E CD002D            jsr _ChangeASCII
 0171 A701              ais #1
 0173 B700              sta *__r1
 0175 A605              lda #5
 0177 87                psha
 0178 A602              lda #2
 017A 87                psha
 017B B600              lda *__r1
 017D 87                psha
 017E CD0000            jsr _LcdshowCharacter
 0181 A703              ais #3
 0183 95                tsx
 0184           ;     LcdshowCharacter(ChangeASCII(temp[9]),2,6);
 0184 E604              lda 4,X
 0186 AB09              add #9
 0188 B700              sta *__r1
 018A E603              lda 3,X
 018C A900              adc #0
 018E B700              sta *__r0
 0190 5500              ldhx *__r0
 0192 F6                lda ,x
 0193 87                psha
 0194 CD002D            jsr _ChangeASCII
 0197 A701              ais #1
 0199 B700              sta *__r1
 019B A606              lda #6
 019D 87                psha
 019E A602              lda #2
 01A0 87                psha
 01A1 B600              lda *__r1
 01A3 87                psha
 01A4 CD0000            jsr _LcdshowCharacter
 01A7 A703              ais #3
 01A9           ;     LcdshowCharacter(':',2,7);
 01A9 A607              lda #7
 01AB 87                psha
 01AC A602              lda #2
 01AE 87                psha
 01AF A63A              lda #58
 01B1 87                psha
 01B2 CD0000            jsr _LcdshowCharacter
 01B5 A703              ais #3
 01B7 95                tsx
 01B8           ;     LcdshowCharacter(ChangeASCII(temp[10]),2,8);

⌨️ 快捷键说明

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