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

📄 lcd.lis

📁 基于ATMEGA16的AD转换的C程序源代码
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00A8           _WR_control::
 00A8 0E940000          xcall push_xgsetF000
 00AC 602F              mov R22,R16
 00AE                   .dbline -1
 00AE                   .dbline 51
 00AE           ; }
 00AE           ; //**************************************************************************
 00AE           ; void WR_control(unsigned char dat)
 00AE           ; {
 00AE                   .dbline 53
 00AE           ;      unsigned char s;
 00AE           ;        s=dat&0xf0;
 00AE 462F              mov R20,R22
 00B0 407F              andi R20,240
 00B2                   .dbline 54
 00B2           ;        lcd_out(0xf8);
 00B2 08EF              ldi R16,248
 00B4 D2DF              xcall _lcd_out
 00B6                   .dbline 55
 00B6           ;        lcd_out(s);
 00B6 042F              mov R16,R20
 00B8 D0DF              xcall _lcd_out
 00BA                   .dbline 56
 00BA           ;        s=dat&0x0f;
 00BA 462F              mov R20,R22
 00BC 4F70              andi R20,15
 00BE                   .dbline 57
 00BE           ;        s<<=4;
 00BE 842F              mov R24,R20
 00C0 8F70              andi R24,#0x0F
 00C2 8295              swap R24
 00C4 482F              mov R20,R24
 00C6                   .dbline 58
 00C6           ;        lcd_out(s);
 00C6 082F              mov R16,R24
 00C8 C8DF              xcall _lcd_out
 00CA                   .dbline -2
 00CA           L26:
 00CA                   .dbline 0 ; func end
 00CA 0C940000          xjmp pop_xgsetF000
 00CE                   .dbsym r s 20 c
 00CE                   .dbsym r dat 22 c
 00CE                   .dbend
 00CE                   .dbfunc e lcd_control _lcd_control fV
                        .even
 00CE           _lcd_control::
 00CE                   .dbline -1
 00CE                   .dbline 62
 00CE           ; }
 00CE           ; //**************************************************************************
 00CE           ; void lcd_control()
 00CE           ; {
 00CE                   .dbline 63
 00CE           ;       WR_control(0x30);
 00CE 00E3              ldi R16,48
 00D0 EBDF              xcall _WR_control
 00D2                   .dbline 64
 00D2           ;       WR_control(0x0c);
 00D2 0CE0              ldi R16,12
 00D4 E9DF              xcall _WR_control
 00D6                   .dbline -2
 00D6           L27:
 00D6                   .dbline 0 ; func end
 00D6 0895              ret
 00D8                   .dbend
 00D8                   .dbfunc e lcd_clear _lcd_clear fV
 00D8           ;              i -> R20,R21
                        .even
 00D8           _lcd_clear::
 00D8 4A93              st -y,R20
 00DA 5A93              st -y,R21
 00DC                   .dbline -1
 00DC                   .dbline 68
 00DC           ; }
 00DC           ; //**************************************************************************
 00DC           ; void lcd_clear()
 00DC           ; {
 00DC                   .dbline 70
 00DC           ;   int i;
 00DC           ;   WR_control(0x01);
 00DC 01E0              ldi R16,1
 00DE E4DF              xcall _WR_control
 00E0                   .dbline 71
 00E0           ;   for(i=0;i<5000;i++) //      延时5ms
 00E0 4427              clr R20
 00E2 5527              clr R21
 00E4           L29:
 00E4                   .dbline 72
 00E4           ;       {
 00E4                   .dbline 73
 00E4           ;               asm("nop");
 00E4 0000              nop
 00E6                   .dbline 74
 00E6           ;               asm("nop");
 00E6 0000              nop
 00E8                   .dbline 76
 00E8           ;               
 00E8           ;       } 
 00E8           L30:
 00E8                   .dbline 71
 00E8 4F5F              subi R20,255  ; offset = 1
 00EA 5F4F              sbci R21,255
 00EC                   .dbline 71
 00EC 4838              cpi R20,136
 00EE E3E1              ldi R30,19
 00F0 5E07              cpc R21,R30
 00F2 C4F3              brlt L29
 00F4           X6:
 00F4                   .dbline -2
 00F4           L28:
 00F4                   .dbline 0 ; func end
 00F4 5991              ld R21,y+
 00F6 4991              ld R20,y+
 00F8 0895              ret
 00FA                   .dbsym r i 20 I
 00FA                   .dbend
 00FA                   .dbfunc e LCD_address _LCD_address fV
 00FA           ;        address -> R20
 00FA           ;              y -> R22
 00FA           ;              x -> R10
                        .even
 00FA           _LCD_address::
 00FA 0E940000          xcall push_xgsetF00C
 00FE 622F              mov R22,R18
 0100 A02E              mov R10,R16
 0102                   .dbline -1
 0102                   .dbline 85
 0102           ; }
 0102           ; /*******************************************************/
 0102           ; /******   函数名称: LCD_set_xy()                  ******/
 0102           ; /******   功    能: 设置LCD显示坐标               ******/
 0102           ; /******   参    数: 显示字符串的位置,X:0-15,Y:0-1*****/
 0102           ; /******   返回值  : 无                            ******/
 0102           ; /*******************************************************/
 0102           ; void LCD_address( unsigned char x, unsigned char y )
 0102           ; {
 0102                   .dbline 87
 0102           ;       unsigned char address;
 0102           ;       switch(x)
 0102 4A2D              mov R20,R10
 0104 5527              clr R21
 0106 4030              cpi R20,0
 0108 4507              cpc R20,R21
 010A 69F0              breq L37
 010C           X7:
 010C 4130              cpi R20,1
 010E E0E0              ldi R30,0
 0110 5E07              cpc R21,R30
 0112 61F0              breq L38
 0114           X8:
 0114 4230              cpi R20,2
 0116 E0E0              ldi R30,0
 0118 5E07              cpc R21,R30
 011A 59F0              breq L39
 011C           X9:
 011C 4330              cpi R20,3
 011E E0E0              ldi R30,0
 0120 5E07              cpc R21,R30
 0122 51F0              breq L40
 0124           X10:
 0124 0CC0              xjmp L34
 0126           L37:
 0126                   .dbline 90
 0126           ;       {
 0126           ;               case 0:
 0126           ;                          address = 0x80 + y;             //计算显示地址
 0126 462F              mov R20,R22
 0128 4058              subi R20,128    ; addi 128
 012A                   .dbline 91
 012A           ;                          break;
 012A 0BC0              xjmp L35
 012C           L38:
 012C                   .dbline 93
 012C           ;               case 1:
 012C           ;                          address = 0x90 + y;             //计算显示地址
 012C 462F              mov R20,R22
 012E 4057              subi R20,112    ; addi 144
 0130                   .dbline 94
 0130           ;                          break;
 0130 08C0              xjmp L35
 0132           L39:
 0132                   .dbline 96
 0132           ;               case 2:
 0132           ;                          address = 0x88 + y;             //计算显示地址
 0132 462F              mov R20,R22
 0134 4857              subi R20,120    ; addi 136
 0136                   .dbline 97
 0136           ;                          break;
 0136 05C0              xjmp L35
 0138           L40:
 0138                   .dbline 99
 0138           ;               case 3:
 0138           ;                          address = 0x98 + y;             //计算显示地址
 0138 462F              mov R20,R22
 013A 4856              subi R20,104    ; addi 152
 013C                   .dbline 100
 013C           ;                          break;
 013C 02C0              xjmp L35
 013E           L34:
 013E                   .dbline 101
 013E           ;               default:address = 0x80 + y;
 013E 462F              mov R20,R22
 0140 4058              subi R20,128    ; addi 128
 0142                   .dbline 102
 0142           ;       }
 0142           L35:
 0142                   .dbline 103
 0142           ;       WR_control( address);                                      //写地址命令
 0142 042F              mov R16,R20
 0144 B1DF              xcall _WR_control
 0146                   .dbline -2
 0146           L33:
 0146                   .dbline 0 ; func end
 0146 0C940000          xjmp pop_xgsetF00C
 014A                   .dbsym r address 20 c
 014A                   .dbsym r y 22 c
 014A                   .dbsym r x 10 c
 014A                   .dbend
 014A                   .dbfunc e LCD_Write_string _LCD_Write_string fV
 014A           ;              s -> R20,R21
 014A           ;              Y -> R12
 014A           ;              X -> R10
                        .even
 014A           _LCD_Write_string::
 014A 0E940000          xcall push_xgset303C
 014E C22E              mov R12,R18
 0150 A02E              mov R10,R16
 0152 4E81              ldd R20,y+6
 0154 5F81              ldd R21,y+7
 0156                   .dbline -1
 0156                   .dbline 114
 0156           ; }
 0156           ; //**************************************************************************
 0156           ; /*******************************************************/
 0156           ; /******   函数名称: LCD_write_string()            ******/
 0156           ; /******   功    能: 中英文字符串显示函数          ******/
 0156           ; /******   参    数: *s--英文字符串指针            ******/
 0156           ; /******             X、Y--显示字符串的位置        ******/
 0156           ; /******   返回值  : 无                            ******/
 0156           ; /*******************************************************/
 0156           ; void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
 0156           ; {
 0156                   .dbline 116
 0156           ;     
 0156           ;       LCD_address( X, Y );                                            //写显示地址
 0156 2C2D              mov R18,R12
 0158 0A2D              mov R16,R10
 015A CFDF              xcall _LCD_address
 015C 05C0              xjmp L43
 015E           L42:
 015E                   .dbline 118
 015E           ;     while (*s)                                                                //是否到字符串尾
 015E           ;     {
 015E                   .dbline 119
 015E           ;       WR_dat (*s );                                           //写显示数据
 015E FA01              movw R30,R20
 0160 0081              ldd R16,z+0
 0162 8FDF              xcall _WR_dat
 0164                   .dbline 120
 0164           ;               s ++;                                                           //字符串地址加1
 0164 4F5F              subi R20,255  ; offset = 1
 0166 5F4F              sbci R21,255
 0168                   .dbline 121
 0168           ;       }
 0168           L43:
 0168                   .dbline 117
 0168 FA01              movw R30,R20
 016A 2080              ldd R2,z+0
 016C 2220              tst R2
 016E B9F7              brne L42
 0170           X11:
 0170                   .dbline -2
 0170           L41:
 0170                   .dbline 0 ; func end
 0170 0C940000          xjmp pop_xgset303C
 0174                   .dbsym r s 20 pc
 0174                   .dbsym r Y 12 c
 0174                   .dbsym r X 10 c
 0174                   .dbend
 0174                   .dbfunc e BCD_ASCII _BCD_ASCII fc
 0174           ;            bcd -> R16
                        .even
 0174           _BCD_ASCII::
 0174                   .dbline -1
 0174                   .dbline 133
 0174           ; }
 0174           ; 
 0174           ; 
 0174           ; /******************************************************************************/ 
 0174           ; //函数功能:将BCD码转换为ASCII码函数 
 0174           ; //输入数据:BCD
 0174           ; //输出:ASCII
 0174           ; //作者:韩红瑞
 0174           ; //修改时间:2006-08-31
 0174           ; /******************************************************************************/ 
 0174           ; unsigned char BCD_ASCII(unsigned char bcd) 
 0174           ; { 
 0174                   .dbline 134
 0174           ;     bcd &= 0x0F; 
 0174 0F70              andi R16,15
 0176                   .dbline 135
 0176           ;     if(bcd > 9)  
 0176 89E0              ldi R24,9
 0178 8017              cp R24,R16
 017A 10F4              brsh L46
 017C           X12:
 017C                   .dbline 136
 017C           ;     bcd +=('7');     // 将A~F转换为ASCII 
 017C 095C              subi R16,201    ; addi 55
 017E 01C0              xjmp L47
 0180           L46:
 0180                   .dbline 138
 0180           ;     else 
 0180           ;     bcd += '0';         // 将0~9转换为ASCII 0~9 
 0180 005D              subi R16,208    ; addi 48
 0182           L47:

⌨️ 快捷键说明

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