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

📄 1602lcd.lis

📁 1602lcd显示频率计 通过了proteus仿真
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 008A 0000              nop
 008C                   .dbline 61
 008C           ;  lcd_control_port|=lcd_EN;//E=1
 008C DA9A              sbi 0x1b,2
 008E                   .dbline 63
 008E           ;  //while(lcd_busy_pin&busy);//等待LCD_DB7为0/////////////////////////
 008E           ;  lcd_control_port&=~lcd_EN;//重设E=0
 008E DA98              cbi 0x1b,2
 0090                   .dbline 64
 0090           ;  lcd_busy_ddr|=busy;//设置busy口为输出
 0090 8F9A              sbi 0x11,7
 0092                   .dbline -2
 0092           L6:
 0092                   .dbline 0 ; func end
 0092 0895              ret
 0094                   .dbend
 0094                   .dbfunc e display_a_char _display_a_char fV
 0094           ;   position_tem -> R20
 0094           ;      char_data -> R10
 0094           ;       position -> R22
                        .even
 0094           _display_a_char::
 0094 0E940000          xcall push_xgsetF00C
 0098 A22E              mov R10,R18
 009A 602F              mov R22,R16
 009C                   .dbline -1
 009C                   .dbline 70
 009C           ; }
 009C           ; 
 009C           ; //指定位置显示一个字符:第一行位置0~15,第二行16~31
 009C           ; //显示一个字符函数
 009C           ; void display_a_char(unsigned char position,unsigned char char_data)//参数position指定位置0~31,char_data为要显示的字符
 009C           ; {
 009C                   .dbline 72
 009C           ;  unsigned char position_tem;
 009C           ;  if(position>=0x10)
 009C 6031              cpi R22,16
 009E 18F0              brlo L8
 00A0           X1:
 00A0                   .dbline 73
 00A0           ;  position_tem=position+0xb0;///////////
 00A0 462F              mov R20,R22
 00A2 4055              subi R20,80    ; addi 176
 00A4 02C0              xjmp L9
 00A6           L8:
 00A6                   .dbline 75
 00A6           ;  else
 00A6           ;  position_tem=position+0x80;
 00A6 462F              mov R20,R22
 00A8 4058              subi R20,128    ; addi 128
 00AA           L9:
 00AA                   .dbline 76
 00AA           ;  lcd_write_command(position_tem,1);
 00AA 21E0              ldi R18,1
 00AC 042F              mov R16,R20
 00AE CDDF              xcall _lcd_write_command
 00B0                   .dbline 77
 00B0           ;  lcd_write_data(char_data);
 00B0 0A2D              mov R16,R10
 00B2 DCDF              xcall _lcd_write_data
 00B4                   .dbline -2
 00B4           L7:
 00B4                   .dbline 0 ; func end
 00B4 0C940000          xjmp pop_xgsetF00C
 00B8                   .dbsym r position_tem 20 c
 00B8                   .dbsym r char_data 10 c
 00B8                   .dbsym r position 22 c
 00B8                   .dbend
 00B8                   .dbfunc e display_a_string _display_a_string fV
 00B8           ;        col_tem -> R22
 00B8           ;              i -> R20
 00B8           ;            ptr -> R10,R11
 00B8           ;            col -> R20
                        .even
 00B8           _display_a_string::
 00B8 0E940000          xcall push_xgsetF00C
 00BC 5901              movw R10,R18
 00BE 402F              mov R20,R16
 00C0                   .dbline -1
 00C0                   .dbline 83
 00C0           ; }
 00C0           ; 
 00C0           ; //指定一行显示连续字符串:0显示在第一行,1显示在第二行,注字符串不能长于16个字符
 00C0           ; //显示一行连续字符串函数
 00C0           ; void display_a_string(unsigned char col,unsigned char *ptr)//参数col指定行,*ptr指字符串数组的首指针
 00C0           ; {
 00C0                   .dbline 85
 00C0           ;  unsigned char col_tem,i;
 00C0           ;  col_tem=col<<4;//若col为1(即在LCD第二行显示字符串),先把col左移4位,使显示字符的首位置改到第二行首位,即位置16
 00C0 642F              mov R22,R20
 00C2 6F70              andi R22,#0x0F
 00C4 6295              swap R22
 00C6                   .dbline 86
 00C6           ;  for(i=0;i<16;i++)
 00C6 4427              clr R20
 00C8 0AC0              xjmp L14
 00CA           L11:
 00CA                   .dbline 87
 00CA           ;  display_a_char(col_tem++,*(ptr+i));
 00CA E42F              mov R30,R20
 00CC FF27              clr R31
 00CE EA0D              add R30,R10
 00D0 FB1D              adc R31,R11
 00D2 2081              ldd R18,z+0
 00D4 262E              mov R2,R22
 00D6 6F5F              subi R22,255    ; addi 1
 00D8 022D              mov R16,R2
 00DA DCDF              xcall _display_a_char
 00DC           L12:
 00DC                   .dbline 86
 00DC 4395              inc R20
 00DE           L14:
 00DE                   .dbline 86
 00DE 4031              cpi R20,16
 00E0 A0F3              brlo L11
 00E2           X2:
 00E2                   .dbline -2
 00E2           L10:
 00E2                   .dbline 0 ; func end
 00E2 0C940000          xjmp pop_xgsetF00C
 00E6                   .dbsym r col_tem 22 c
 00E6                   .dbsym r i 20 c
 00E6                   .dbsym r ptr 10 pc
 00E6                   .dbsym r col 20 c
 00E6                   .dbend
 00E6                   .dbfunc e delay_1ms _delay_1ms fV
 00E6           ;              i -> R16,R17
                        .even
 00E6           _delay_1ms::
 00E6                   .dbline -1
 00E6                   .dbline 93
 00E6           ; }
 00E6           ; 
 00E6           ; /*---------------------------------------延时函数-------------------------------------*/
 00E6           ; //1ms延时函数
 00E6           ; void delay_1ms(void)
 00E6           ; {
 00E6                   .dbline 95
 00E6           ;  unsigned int i;
 00E6           ;  for(i=0;i<600;i++);
 00E6 0027              clr R16
 00E8 1127              clr R17
 00EA 02C0              xjmp L19
 00EC           L16:
 00EC                   .dbline 95
 00EC           L17:
 00EC                   .dbline 95
 00EC 0F5F              subi R16,255  ; offset = 1
 00EE 1F4F              sbci R17,255
 00F0           L19:
 00F0                   .dbline 95
 00F0 0835              cpi R16,88
 00F2 E2E0              ldi R30,2
 00F4 1E07              cpc R17,R30
 00F6 D0F3              brlo L16
 00F8           X3:
 00F8                   .dbline -2
 00F8           L15:
 00F8                   .dbline 0 ; func end
 00F8 0895              ret
 00FA                   .dbsym r i 16 i
 00FA                   .dbend
 00FA                   .dbfunc e delay_nms _delay_nms fV
 00FA           ;              i -> R20,R21
 00FA           ;              n -> R10,R11
                        .even
 00FA           _delay_nms::
 00FA 0E940000          xcall push_xgset300C
 00FE 5801              movw R10,R16
 0100                   .dbline -1
 0100                   .dbline 100
 0100           ; }
 0100           ; 
 0100           ; //n ms延时函数
 0100           ; void delay_nms(unsigned int n)
 0100           ; {
 0100                   .dbline 102
 0100           ;  unsigned int i;
 0100           ;  for(i=0;i<n;i++)delay_1ms();
 0100 4427              clr R20
 0102 5527              clr R21
 0104 03C0              xjmp L24
 0106           L21:
 0106                   .dbline 102
 0106 EFDF              xcall _delay_1ms
 0108           L22:
 0108                   .dbline 102
 0108 4F5F              subi R20,255  ; offset = 1
 010A 5F4F              sbci R21,255
 010C           L24:
 010C                   .dbline 102
 010C 4A15              cp R20,R10
 010E 5B05              cpc R21,R11
 0110 D0F3              brlo L21
 0112           X4:
 0112                   .dbline -2
 0112           L20:
 0112                   .dbline 0 ; func end
 0112 0C940000          xjmp pop_xgset300C
 0116                   .dbsym r i 20 i
 0116                   .dbsym r n 10 i
 0116                   .dbend
 0116           ; }

⌨️ 快捷键说明

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