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

📄 hzmmi.lis

📁 atmel的atmega128外扩ram对液晶的驱动调试程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                         .module hzmmi.c
                         .area text(rom, con, rel)
 0000                   .dbfile D:\美来尼尔\美兰尼尔改进\测控单元\面板程序\测控面板调试程序\hzmmi.c
 0000                   .dbfunc s main _main fI
                       ;             pt -> <dead>
                       ;              j -> <dead>
                       ;              i -> <dead>
                         .even
 0000                 _main::
 0000                   .dbline -1
 0000                   .dbline 38
                       ; #include "hzmmi.h"
                       ; 
                       ; #define __main__
                       ; 
                       ; #define T_RELOAD    (10000-1)       //1.000ms @10MHz,毫秒定时器用
                       ; 
                       ; void init1(void);                               //初始化子程序
                       ; void run_1s(void);                      //1秒任务
                       ; void dlyms(word ms);                           //毫秒级延时函数
                       ; void delly(word ns);                           //毫秒级延时函数
                       ; void str_hz(byte row,byte col,byte *str);     //显示汉字串及大ASCII串
                       ; void wait_disp(void);                          //液晶忙等待
                       ; void write_order(byte order);    //对液晶发送命令码
                       ; void write_data(byte data);    //向LCD送数据码(ASCII码)
                       ; void init_disp_nocls(void);   //对液晶初始化,不清屏
                       ; void cls(void);               //清屏
                       ; void init_disp(void);         //对液晶初始化,清屏
                       ; void str_sasc(byte row,byte col,byte *str);     //显示小ASCII串
                       ; void disp_face(void);             //显示首页
                       ; void full(void);
                       ; void write_data(byte data);
                       ; void write_data_auto(byte data);
                       ; 
                       ; void wait_disp_auto(void);
                       ; 
                       ; word  sec_num;                  //1秒任务计时器
                       ; word  mstimer1;                 //毫秒延时计数                           
                       ; word  mstimer3;                 //串口发送延时                           
                       ; byte ctl_data;
                       ; LIB_ADDR lib_addr;                              
                       ; 
                       ; 
                       ; byte disp_buffer[128];            //显示缓冲区
                       ; byte flag;
                       ; 
                       ; //主程序调用了上电复位进程,键盘进程,事件进程;
                       ; void main(void)
                       ; {
 0000                   .dbline 42
                       ; word i,j;
                       ; byte *pt;
                       ; 
                       ;     flag=1;
 0000 81E0              ldi R24,1
 0002 80930000          sts _flag,R24
 0006                   .dbline 43
                       ;         init1();        
 0006 2CD0              xcall _init1
 0008                   .dbline 44
                       ;         init_disp();  
 0008 40D1              xcall _init_disp
 000A                   .dbline 45
                       ;         disp_face();
 000A 72D0              xcall _disp_face
 000C                   .dbline 47
 000C                 L6:
 000C                   .dbline 47
                       ; //        dlyms(4000);
                       ;         for(;;){
 000C                   .dbline 48
                       ;           if(sec_num>1000)   {
 000C 88EE              ldi R24,1000
 000E 93E0              ldi R25,3
 0010 30900200          lds R3,_sec_num+1
 0014 20900100          lds R2,_sec_num
 0018 8215              cp R24,R2
 001A 9305              cpc R25,R3
 001C 70F4              brsh L10
 001E                   .dbline 48
 001E                   .dbline 50
                       ;         
                       ;               if(flag){
 001E 20900000          lds R2,_flag
 0022 2220              tst R2
 0024 29F0              breq L12
 0026                   .dbline 50
 0026                   .dbline 51
                       ;                 flag=0;     
 0026 2224              clr R2
 0028 20920000          sts _flag,R2
 002C                   .dbline 52
                       ;                 disp_face();                         
 002C 61D0              xcall _disp_face
 002E                   .dbline 53
                       ;               }
 002E 04C0              xjmp L13
 0030                 L12:
 0030                   .dbline 54
                       ;                else{
 0030                   .dbline 55
                       ;                   flag=1;                 
 0030 81E0              ldi R24,1
 0032 80930000          sts _flag,R24
 0036                   .dbline 56
                       ;                   cls();
 0036 F2D0              xcall _cls
 0038                   .dbline 57
                       ;                }
 0038                 L13:
 0038                   .dbline 59
                       ;            
                       ;              run_1s(); 
 0038 03D0              xcall _run_1s
 003A                   .dbline 60
                       ;           }
 003A                 L10:
 003A                   .dbline 61
 003A A895              wdr
 003C                   .dbline 62
 003C                   .dbline 47
 003C                   .dbline 47
 003C E7CF              xjmp L6
 003E                 X0:
 003E                   .dbline -2
 003E                 L5:
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbsym l pt 1 pc
 0040                   .dbsym l j 1 s
 0040                   .dbsym l i 1 s
 0040                   .dbfunc s run_1s _run_1s fI
                         .even
 0040                 _run_1s::
 0040                   .dbline -1
 0040                   .dbline 66
                       ;           asm("wdr");                     //软看门狗复位         
                       ;         }
                       ; }
                       ; //1秒任务
                       ; void run_1s(void)
                       ; {
 0040                   .dbline 67
                       ;     sec_num=0;
 0040 2224              clr R2
 0042 3324              clr R3
 0044 30920200          sts _sec_num+1,R3
 0048 20920100          sts _sec_num,R2
 004C                   .dbline 68
                       ;     PORTE^=RUN_LAMP;       
 004C 84E0              ldi R24,4
 004E 23B0              in R2,0x3
 0050 2826              eor R2,R24
 0052 23B8              out 0x3,R2
 0054                   .dbline 69
                       ;     PORTG|=EL_ON;
 0054 80916500          lds R24,101
 0058 8061              ori R24,16
 005A 80936500          sts 101,R24
 005E                   .dbline -2
 005E                   .dbline 70
                       ; }
 005E                 L14:
 005E                   .dbline 0 ; func end
 005E 0895              ret
 0060                   .dbfunc s init1 _init1 fI
                         .even
 0060                 _init1::
 0060                   .dbline -1
 0060                   .dbline 73
                       ; //初始化
                       ; void init1(void)
                       ; {
 0060                   .dbline 75
                       ; //定时器初始化
                       ;     MCUCR=0x80;//enable the External Memory
 0060 80E8              ldi R24,128
 0062 85BF              out 0x35,R24
 0064                   .dbline 76
                       ;     XMCRA=0x0e;
 0064 8EE0              ldi R24,14
 0066 80936D00          sts 109,R24
 006A                   .dbline 77
                       ;     XMCRB=0x80;
 006A 80E8              ldi R24,128
 006C 80936C00          sts 108,R24
 0070                   .dbline 79
                       ;     
                       ;     TCCR1A=0;
 0070 2224              clr R2
 0072 2FBC              out 0x2f,R2
 0074                   .dbline 80
                       ;     TCCR1B=0x09;                    // ctc1=1,ck/1
 0074 89E0              ldi R24,9
 0076 8EBD              out 0x2e,R24
 0078                   .dbline 81
                       ;     TIMSK=0x10;             // TIME1B COMPEAR INT OK
 0078 80E1              ldi R24,16
 007A 87BF              out 0x37,R24
 007C                   .dbline 82
                       ;     OCR1AH=(byte)(T_RELOAD/256);
 007C 87E2              ldi R24,39
 007E 8BBD              out 0x2b,R24
 0080                   .dbline 83
                       ;     OCR1AL=(byte)T_RELOAD;
 0080 8FE0              ldi R24,15
 0082 8ABD              out 0x2a,R24
 0084                   .dbline 85
                       ; //液晶口初始化  
                       ;     DDRB=0x00;              //键盘输入
 0084 27BA              out 0x17,R2
 0086                   .dbline 86
                       ;         DDRD=0xff;              //LCD控制
 0086 8FEF              ldi R24,255
 0088 81BB              out 0x11,R24
 008A                   .dbline 87
                       ;         DDRE=0x0f;      
 008A 8FE0              ldi R24,15
 008C 82B9              out 0x2,R24
 008E                   .dbline 88
                       ;         DDRF=0x0f;              //LIB为输出
 008E 80936100          sts 97,R24
 0092                   .dbline 89
                       ;         DDRG=0x18;          
 0092 88E1              ldi R24,24
 0094 80936400          sts 100,R24
 0098                   .dbline 91
                       ; 
                       ;     asm("sei"); 
 0098 7894              sei
 009A                   .dbline -2
 009A                   .dbline 92
                       ; }
 009A                 L15:
 009A                   .dbline 0 ; func end
 009A 0895              ret
                         .area vector(rom, abs)
                         .org 48
 0030 0C944E00          jmp _int_timer0
                         .area text(rom, con, rel)
 009C                   .dbfile D:\美来尼尔\美兰尼尔改进\测控单元\面板程序\测控面板调试程序\hzmmi.c
 009C                   .dbfunc s int_timer0 _int_timer0 fI
                         .even
 009C                 _int_timer0::
 009C 2A92              st -y,R2
 009E 3A92              st -y,R3
 00A0 8A93              st -y,R24
 00A2 9A93              st -y,R25
 00A4 2FB6              in R2,0x3f
 00A6 2A92              st -y,R2
 00A8                   .dbline -1
 00A8                   .dbline 96
                       ; 
                       ; #pragma interrupt_handler   int_timer0:13             //定义中断向量
                       ; void int_timer0(void)                                     //定时器延时器中断,1ms中断一次
                       ; {
 00A8                   .dbline 97
                       ;     asm("cli");         //关中断
 00A8 F894              cli
 00AA                   .dbline 98
                       ;     OCR1AH=(byte)(T_RELOAD/256);
 00AA 87E2              ldi R24,39
 00AC 8BBD              out 0x2b,R24
 00AE                   .dbline 99
                       ;     OCR1AL=(byte)T_RELOAD;
 00AE 8FE0              ldi R24,15
 00B0 8ABD              out 0x2a,R24
 00B2                   .dbline 100
                       ;         sec_num++;                      //秒计时+1      
 00B2 90910200          lds R25,_sec_num+1
 00B6 80910100          lds R24,_sec_num
 00BA 0196              adiw R24,1
 00BC 90930200          sts _sec_num+1,R25
 00C0 80930100          sts _sec_num,R24
 00C4                   .dbline 101
                       ;         if(mstimer1>0) mstimer1--;
 00C4 30908B00          lds R3,_mstimer1+1
 00C8 20908A00          lds R2,_mstimer1
 00CC 2220              tst R2
 00CE 11F4              brne X1
 00D0 3320              tst R3
 00D2 31F0              breq L17
 00D4                 X1:
 00D4                   .dbline 101
 00D4 C101              movw R24,R2
 00D6 0197              sbiw R24,1
 00D8 90938B00          sts _mstimer1+1,R25
 00DC 80938A00          sts _mstimer1,R24
 00E0                 L17:
 00E0                   .dbline 103
                       ; //        if(mstimer2>0) mstimer2--;
                       ;     asm("sei");             //中断允许
 00E0 7894              sei
 00E2                   .dbline -2
 00E2                   .dbline 104
                       ; }
 00E2                 L16:
 00E2 2990              ld R2,y+
 00E4 2FBE              out 0x3f,R2
 00E6 9991              ld R25,y+
 00E8 8991              ld R24,y+
 00EA 3990              ld R3,y+
 00EC 2990              ld R2,y+
 00EE                   .dbline 0 ; func end
 00EE 1895              reti
 00F0                   .dbfunc s disp_face _disp_face fI
                       ;              i -> <dead>
                         .even
 00F0                 _disp_face::
 00F0 2297              sbiw R28,2
 00F2                   .dbline -1
 00F2                   .dbline 107
                       ; 
                       ; void disp_face(void)
                       ; {
 00F2                   .dbline 109

⌨️ 快捷键说明

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