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

📄 1602b_lcd.lis

📁 用avr的m16产生pwm波控制舵机的程序!
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00B8           ;       LCD_DATA_PORT |= data_temp&0xf0;
 00B8 CB01              movw R24,R22
 00BA 807F              andi R24,240
 00BC 9070              andi R25,0
 00BE 28B2              in R2,0x18
 00C0 3324              clr R3
 00C2 282A              or R2,R24
 00C4 392A              or R3,R25
 00C6 28BA              out 0x18,R2
 00C8 08C0              xjmp L7
 00CA           L6:
 00CA                   .dbline 76
 00CA           ;     else
 00CA           ;       LCD_DATA_PORT |= command_temp&0xf0;
 00CA CA01              movw R24,R20
 00CC 807F              andi R24,240
 00CE 9070              andi R25,0
 00D0 28B2              in R2,0x18
 00D2 3324              clr R3
 00D4 282A              or R2,R24
 00D6 392A              or R3,R25
 00D8 28BA              out 0x18,R2
 00DA           L7:
 00DA                   .dbline 77
 00DA           ;     LCD_en_write();
 00DA ABDF              xcall _LCD_en_write
 00DC                   .dbline 79
 00DC           ;    
 00DC           ;     LCD_RW_PORT |= LCD_RW;
 00DC 939A              sbi 0x12,3
 00DE                   .dbline 81
 00DE           ;   
 00DE           ;     LCD_RS_PORT ^= LCD_RS;    
 00DE 80E1              ldi R24,16
 00E0 22B2              in R2,0x12
 00E2 2826              eor R2,R24
 00E4 22BA              out 0x12,R2
 00E6                   .dbline -2
 00E6           L3:
 00E6 0E940000          xcall pop_gset4
 00EA                   .dbline 0 ; func end
 00EA 0895              ret
 00EC                   .dbsym r data_temp 22 i
 00EC                   .dbsym r command_temp 20 i
 00EC                   .dbsym r data 12 i
 00EC                   .dbsym r command 10 i
 00EC                   .dbend
 00EC                   .dbfunc e LCD_wait_Ready _LCD_wait_Ready fV
                        .even
 00EC           _LCD_wait_Ready::
 00EC                   .dbline -1
 00EC                   .dbline 85
 00EC           ;   }
 00EC           ; 
 00EC           ; void LCD_wait_Ready(void)                  //等待LCD空闲
 00EC           ;   {
 00EC                   .dbline 86
 00EC           ;     LCD_DATA_DDR &= ~0x80;                 //PD7 I/O口方向设置为输入
 00EC BF98              cbi 0x17,7
 00EE                   .dbline 88
 00EE           ;    
 00EE           ;     LCD_RW_PORT |= LCD_RW;                 //RW=1
 00EE 939A              sbi 0x12,3
 00F0                   .dbline 90
 00F0           ;    
 00F0           ;     LCD_RS_PORT &= ~LCD_RS;                //RS=0
 00F0 9498              cbi 0x12,4
 00F2                   .dbline 92
 00F2           ;    
 00F2           ;     LCD_EN_PORT |= LCD_EN;                 //EN=1
 00F2 959A              sbi 0x12,5
 00F4           L9:
 00F4                   .dbline 94
 00F4           L10:
 00F4                   .dbline 94
 00F4           ;    
 00F4           ;     while (!( LCD_DATA_PIN&0x80 ) == 0);   //RW=1,读PD7,为0表示空闲;
 00F4 B799              sbic 0x16,7
 00F6 03C0              rjmp L12
 00F8 01E0              ldi R16,1
 00FA 10E0              ldi R17,0
 00FC 02C0              xjmp L13
 00FE           L12:
 00FE 0027              clr R16
 0100 1127              clr R17
 0102           L13:
 0102 0030              cpi R16,0
 0104 0107              cpc R16,R17
 0106 B1F3              breq L9
 0108           X2:
 0108                   .dbline 96
 0108           ;    
 0108           ;     LCD_EN_PORT &= ~LCD_EN;                //EN=0
 0108 9598              cbi 0x12,5
 010A                   .dbline 98
 010A           ;    
 010A           ;     LCD_DATA_DDR |= 0xf0;
 010A 87B3              in R24,0x17
 010C 806F              ori R24,240
 010E 87BB              out 0x17,R24
 0110                   .dbline -2
 0110           L8:
 0110                   .dbline 0 ; func end
 0110 0895              ret
 0112                   .dbend
 0112                   .dbfunc e LCD_set_xy _LCD_set_xy fV
 0112           ;        address -> R20
 0112           ;              y -> R20
 0112           ;              x -> R22
                        .even
 0112           _LCD_set_xy::
 0112 0E940000          xcall push_gset2
 0116 422F              mov R20,R18
 0118 602F              mov R22,R16
 011A                   .dbline -1
 011A                   .dbline 112
 011A           ;   }
 011A           ; 
 011A           ; /*-----------------------------------------------------------------------
 011A           ; LCD_set_xy        : 设置LCD显示的起始位置
 011A           ; 
 011A           ; 输入参数:x、y    : 显示字符串的位置,X:0-15,Y:0-1
 011A           ;                     LCD第一行显示寄存器地址:0X80-0X8F
 011A           ;                     LCD第一行显示寄存器地址:0XC0-0XCF
 011A           ; 
 011A           ; 编写日期          :2004-8-19 
 011A           ; 最后修改日期      :2004-8-19                 
 011A           ; -----------------------------------------------------------------------*/
 011A           ; void LCD_set_xy( unsigned char x, unsigned char y )
 011A           ;   {
 011A                   .dbline 114
 011A           ;     unsigned char address;
 011A           ;     if (y == 0) address = 0x80 + x;
 011A 4423              tst R20
 011C 19F4              brne L15
 011E                   .dbline 114
 011E 462F              mov R20,R22
 0120 4058              subi R20,128    ; addi 128
 0122 02C0              xjmp L16
 0124           L15:
 0124                   .dbline 116
 0124           ;     else 
 0124           ;        address = 0xc0 + x;
 0124 462F              mov R20,R22
 0126 4054              subi R20,64    ; addi 192
 0128           L16:
 0128                   .dbline 117
 0128           ;     LCD_write_char( address, 0 );
 0128 2227              clr R18
 012A 3327              clr R19
 012C 042F              mov R16,R20
 012E 1127              clr R17
 0130 87DF              xcall _LCD_write_char
 0132                   .dbline -2
 0132           L14:
 0132 0E940000          xcall pop_gset2
 0136                   .dbline 0 ; func end
 0136 0895              ret
 0138                   .dbsym r address 20 c
 0138                   .dbsym r y 20 c
 0138                   .dbsym r x 22 c
 0138                   .dbend
 0138                   .dbfunc e LCD_write_string _LCD_write_string fV
 0138           ;              s -> R20,R21
 0138           ;              Y -> R10
 0138           ;              X -> R22
                        .even
 0138           _LCD_write_string::
 0138 0E940000          xcall push_gset3
 013C A22E              mov R10,R18
 013E 602F              mov R22,R16
 0140 4E81              ldd R20,y+6
 0142 5F81              ldd R21,y+7
 0144                   .dbline -1
 0144                   .dbline 129
 0144           ;   }
 0144           ; /*-----------------------------------------------------------------------
 0144           ; LCD_write_string  : 英文字符串显示函数
 0144           ; 
 0144           ; 输入参数:*s      :英文字符串指针;
 0144           ;           X、Y    : 显示字符串的位置
 0144           ; 
 0144           ; 编写日期          :2004-8-19 
 0144           ; 最后修改日期      :2004-8-19                 
 0144           ; -----------------------------------------------------------------------*/
 0144           ; void LCD_write_string(unsigned char X,unsigned char Y,unsigned char *s)
 0144           ;   {
 0144                   .dbline 130
 0144           ;     LCD_set_xy( X, Y );
 0144 2A2D              mov R18,R10
 0146 062F              mov R16,R22
 0148 E4DF              xcall _LCD_set_xy
 014A 08C0              xjmp L19
 014C           L18:
 014C                   .dbline 133
 014C                   .dbline 134
 014C FA01              movw R30,R20
 014E 2081              ldd R18,z+0
 0150 3327              clr R19
 0152 0027              clr R16
 0154 1127              clr R17
 0156 74DF              xcall _LCD_write_char
 0158                   .dbline 135
 0158 4F5F              subi R20,255  ; offset = 1
 015A 5F4F              sbci R21,255
 015C                   .dbline 136
 015C           L19:
 015C                   .dbline 132
 015C           ;     
 015C           ;     while (*s) 
 015C FA01              movw R30,R20
 015E 2080              ldd R2,z+0
 0160 2220              tst R2
 0162 A1F7              brne L18
 0164                   .dbline -2
 0164           L17:
 0164 0E940000          xcall pop_gset3
 0168                   .dbline 0 ; func end
 0168 0895              ret
 016A                   .dbsym r s 20 pc
 016A                   .dbsym r Y 10 c
 016A                   .dbsym r X 22 c
 016A                   .dbend

⌨️ 快捷键说明

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