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

📄 main.lis

📁 LCD128*64 atmega16驱动 带仿真文件
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0090 BEDF              xcall _check_busy
 0092                   .dbline 69
 0092           ;   R_command=LCD_OFF;                        //先关闭LCD右半屏的显示
 0092 8EE3              ldi R24,62
 0094 80930420          sts 8196,R24
 0098                   .dbline 72
 0098           ;   
 0098           ;   /*开启12864的显示*/
 0098           ;   check_busy(0);
 0098 0027              clr R16
 009A B9DF              xcall _check_busy
 009C                   .dbline 73
 009C           ;   L_command=LCD_ON;                         //打开LCD左半屏的显示
 009C 8FE3              ldi R24,63
 009E 80930820          sts 8200,R24
 00A2                   .dbline 74
 00A2           ;   check_busy(1);
 00A2 01E0              ldi R16,1
 00A4 B4DF              xcall _check_busy
 00A6                   .dbline 75
 00A6           ;   R_command=LCD_ON;                         //打开LCD右半屏的显示
 00A6 8FE3              ldi R24,63
 00A8 80930420          sts 8196,R24
 00AC                   .dbline 78
 00AC           ;   
 00AC           ;   /*设置LCD显示的起始行*/
 00AC           ;   check_busy(0);
 00AC 0027              clr R16
 00AE AFDF              xcall _check_busy
 00B0                   .dbline 79
 00B0           ;   L_command=LCD_X;                          //LCD左半屏起始行为0
 00B0 80EC              ldi R24,192
 00B2 80930820          sts 8200,R24
 00B6                   .dbline 80
 00B6           ;   check_busy(1);
 00B6 01E0              ldi R16,1
 00B8 AADF              xcall _check_busy
 00BA                   .dbline 81
 00BA           ;   R_command=LCD_X;                          //LCD右半屏起始行为0
 00BA 80EC              ldi R24,192
 00BC 80930420          sts 8196,R24
 00C0                   .dbline -2
 00C0                   .dbline 82
 00C0           ; }
 00C0           L17:
 00C0                   .dbline 0 ; func end
 00C0 0895              ret
 00C2                   .dbend
 00C2                   .dbfunc e init_devices _init_devices fV
                        .even
 00C2           _init_devices::
 00C2                   .dbline -1
 00C2                   .dbline 85
 00C2           ; 
 00C2           ; void init_devices(void)
 00C2           ; {
 00C2                   .dbline 86
 00C2           ;  XMCRA = 0x00;                              //外部存储器控制
 00C2 2224              clr R2
 00C4 20926D00          sts 109,R2
 00C8                   .dbline 87
 00C8           ;  XMCRB = (1<<XMM2)|(1<<XMM1)|(1<<XMM0);     //外存储高位地址屏蔽,释放端口C
 00C8 87E0              ldi R24,7
 00CA 80936C00          sts 108,R24
 00CE                   .dbline 88
 00CE           ;  port_init();
 00CE 98DF              xcall _port_init
 00D0                   .dbline 89
 00D0           ;  MCUCR = 0x80;                              //外部SRAM使能
 00D0 80E8              ldi R24,128
 00D2 85BF              out 0x35,R24
 00D4                   .dbline -2
 00D4                   .dbline 90
 00D4           ; }
 00D4           L18:
 00D4                   .dbline 0 ; func end
 00D4 0895              ret
 00D6                   .dbend
 00D6                   .dbfunc e write_chineseH _write_chineseH fV
 00D6           ;              i -> R20
 00D6           ;          datas -> R22,R23
 00D6           ;              y -> y+4
 00D6           ;           page -> R18
 00D6           ;             cs -> R16
                        .even
 00D6           _write_chineseH::
 00D6 0E940000          xcall push_gset2
 00DA 6E81              ldd R22,y+6
 00DC 7F81              ldd R23,y+7
 00DE                   .dbline -1
 00DE                   .dbline 98
 00DE           ; 
 00DE           ;  
 00DE           ; /*******************cs为左右屏选,page为页数选择(0~15)********************************
 00DE           ;  *******************y为水平位置选择(0~3),datas指针指向汉字存储的数组地址 ********************/
 00DE           ; 
 00DE           ;  
 00DE           ; void write_chineseH(uchar cs,uchar page,uchar y,const unsigned char *datas) //上半部分显示
 00DE           ; {
 00DE                   .dbline 100
 00DE           ;   uchar i;
 00DE           ;   R_command=LCD_PAGE+page;                  //设置LCD右半屏页地址
 00DE 822F              mov R24,R18
 00E0 8854              subi R24,72    ; addi 184
 00E2 80930420          sts 8196,R24
 00E6                   .dbline 101
 00E6           ;   L_command=LCD_PAGE+page;                  //设置LCD左半屏页地址
 00E6 822F              mov R24,R18
 00E8 8854              subi R24,72    ; addi 184
 00EA 80930820          sts 8200,R24
 00EE                   .dbline 102
 00EE           ;   R_command=LCD_Y+y*16;                     //设置水平显示位置
 00EE 80E1              ldi R24,16
 00F0 0C80              ldd R0,y+4
 00F2 809D              mul R24,R0
 00F4 802D              mov R24,R0
 00F6 805C              subi R24,192    ; addi 64
 00F8 80930420          sts 8196,R24
 00FC                   .dbline 103
 00FC           ;   L_command=LCD_Y+y*16;
 00FC 80E1              ldi R24,16
 00FE 0C80              ldd R0,y+4
 0100 809D              mul R24,R0
 0102 802D              mov R24,R0
 0104 805C              subi R24,192    ; addi 64
 0106 80930820          sts 8200,R24
 010A                   .dbline 104
 010A           ;   for(i=0;i<16;i++)
 010A 4427              clr R20
 010C 0EC0              xjmp L23
 010E           L20:
 010E                   .dbline 105
 010E           ;     {
 010E                   .dbline 106
 010E           ;     if(cs) R_data=*datas;                   //右半屏显示
 010E 0023              tst R16
 0110 29F0              breq L24
 0112                   .dbline 106
 0112 FB01              movw R30,R22
 0114 E491              lpm R30,Z
 0116 E0930620          sts 8198,R30
 011A 04C0              xjmp L25
 011C           L24:
 011C                   .dbline 107
 011C           ;       else   L_data=*datas;                   //左半屏显示
 011C FB01              movw R30,R22
 011E E491              lpm R30,Z
 0120 E0930A20          sts 8202,R30
 0124           L25:
 0124                   .dbline 108
 0124 6F5F              subi R22,255  ; offset = 1
 0126 7F4F              sbci R23,255
 0128                   .dbline 109
 0128           L21:
 0128                   .dbline 104
 0128 4395              inc R20
 012A           L23:
 012A                   .dbline 104
 012A 4031              cpi R20,16
 012C 80F3              brlo L20
 012E                   .dbline -2
 012E                   .dbline 110
 012E           ;       *datas++;
 012E           ;     }
 012E           ; }
 012E           L19:
 012E 0E940000          xcall pop_gset2
 0132                   .dbline 0 ; func end
 0132 0895              ret
 0134                   .dbsym r i 20 c
 0134                   .dbsym r datas 22 pkc
 0134                   .dbsym l y 4 c
 0134                   .dbsym r page 18 c
 0134                   .dbsym r cs 16 c
 0134                   .dbend
 0134                   .dbfunc e write_chineseL _write_chineseL fV
 0134           ;              i -> R20
 0134           ;          datas -> R22,R23
 0134           ;              y -> y+6
 0134           ;           page -> R20
 0134           ;             cs -> R10
                        .even
 0134           _write_chineseL::
 0134 0E940000          xcall push_gset3
 0138 422F              mov R20,R18
 013A A02E              mov R10,R16
 013C 6885              ldd R22,y+8
 013E 7985              ldd R23,y+9
 0140                   .dbline -1
 0140                   .dbline 113
 0140           ; 
 0140           ; void write_chineseL(uchar cs,uchar page,uchar y,const unsigned char *datas) //下半部分显示
 0140           ; {
 0140                   .dbline 115
 0140           ;  uchar i;
 0140           ;  check_busy(1);
 0140 01E0              ldi R16,1
 0142 65DF              xcall _check_busy
 0144                   .dbline 116
 0144           ;  R_command=LCD_PAGE+page;                   //设置LCD右半屏页地址
 0144 842F              mov R24,R20
 0146 8854              subi R24,72    ; addi 184
 0148 80930420          sts 8196,R24
 014C                   .dbline 117
 014C           ;  L_command=LCD_PAGE+page;                   //设置LCD左半屏页地址
 014C 842F              mov R24,R20
 014E 8854              subi R24,72    ; addi 184
 0150 80930820          sts 8200,R24
 0154                   .dbline 118
 0154           ;  R_command=LCD_Y+y*16;                      //设置水平显示位置
 0154 80E1              ldi R24,16
 0156 0E80              ldd R0,y+6
 0158 809D              mul R24,R0
 015A 802D              mov R24,R0
 015C 805C              subi R24,192    ; addi 64
 015E 80930420          sts 8196,R24
 0162                   .dbline 119
 0162           ;  L_command=LCD_Y+y*16;
 0162 80E1              ldi R24,16
 0164 0E80              ldd R0,y+6
 0166 809D              mul R24,R0
 0168 802D              mov R24,R0
 016A 805C              subi R24,192    ; addi 64
 016C 80930820          sts 8200,R24
 0170                   .dbline 120
 0170           ;  for(i=0;i<16;i++)
 0170 4427              clr R20
 0172 0EC0              xjmp L30
 0174           L27:
 0174                   .dbline 121
 0174           ;   {
 0174                   .dbline 122
 0174           ;    if(cs) R_data=*datas;                    //右半屏显示
 0174 AA20              tst R10
 0176 29F0              breq L31
 0178                   .dbline 122
 0178 FB01              movw R30,R22
 017A E491              lpm R30,Z
 017C E0930620          sts 8198,R30
 0180 04C0              xjmp L32
 0182           L31:
 0182                   .dbline 123
 0182           ;    else   L_data=*datas;                    //左半屏显示
 0182 FB01              movw R30,R22
 0184 E491              lpm R30,Z
 0186 E0930A20          sts 8202,R30
 018A           L32:
 018A                   .dbline 124
 018A 6F5F              subi R22,255  ; offset = 1
 018C 7F4F              sbci R23,255
 018E                   .dbline 125
 018E           L28:
 018E                   .dbline 120
 018E 4395              inc R20
 0190           L30:
 0190                   .dbline 120
 0190 4031              cpi R20,16
 0192 80F3              brlo L27
 0194                   .dbline -2
 0194                   .dbline 126
 0194           ;    *datas++;
 0194           ;   }   
 0194           ; }
 0194           L26:
 0194 0E940000          xcall pop_gset3
 0198                   .dbline 0 ; func end
 0198 0895              ret
 019A                   .dbsym r i 20 c
 019A                   .dbsym r datas 22 pkc
 019A                   .dbsym l y 6 c
 019A                   .dbsym r page 20 c
 019A                   .dbsym r cs 10 c
 019A                   .dbend
 019A                   .dbfunc e main _main fV
                        .even
 019A           _main::
 019A 2497              sbiw R28,4
 019C                   .dbline -1
 019C                   .dbline 129
 019C           ; 
 019C           ; void main(void)
 019C           ; {
 019C                   .dbline 130
 019C           ;   init_devices();
 019C 92DF              xcall _init_devices
 019E                   .dbline 131
 019E           ;   LCD_Clean();
 019E 48DF              xcall _LCD_Clean
 01A0                   .dbline 132
 01A0           ;   LCD_Init();
 01A0 71DF              xcall _LCD_Init
 01A2                   .dbline 133
 01A2           ;  write_chineseH(0,0,2,you1);
 01A2 80E0              ldi R24,<_you1
 01A4 90E0              ldi R25,>_you1
 01A6 9B83              std y+3,R25
 01A8 8A83              std y+2,R24
 01AA 82E0              ldi R24,2
 01AC 8883              std y+0,R24
 01AE 2227              clr R18
 01B0 0027              clr R16
 01B2 91DF              xcall _write_chineseH
 01B4                   .dbline -2
 01B4                   .dbline 137
 01B4           ; // write_chineseL(0,1,2,you2); 
 01B4           ; // write_chineseH(1,0,0,hu1);
 01B4           ;  //write_chineseL(1,1,0,hu2);  
 01B4           ; }
 01B4           L33:
 01B4 2496              adiw R28,4
 01B6                   .dbline 0 ; func end
 01B6 0895              ret
 01B8                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\zhuji\桌面\新建文~2\main.c
 0000           _flag::
 0000                   .blkb 1
 0001                   .dbsym e flag _flag c

⌨️ 快捷键说明

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