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

📄 main.lis

📁 atmega128 adc LCD
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\yue01\桌面\LCD12864显示模块\LCD12864显示模块\main.c
 0000                   .dbfunc e io_init _io_init fV
                        .even
 0000           _io_init::
 0000                   .dbline -1
 0000                   .dbline 19
 0000           ; /*
 0000           ; 实验十八:
 0000           ;       LCD12864液晶屏显示实验。
 0000           ;       1、LCD12864显示实验。显示AVR开发网及网址信息。
 0000           ;       2、内部1 M晶振,程序采用单任务方式,软件延时。
 0000           ;       3、进行此实验需要接上外置LCD12864液晶显示屏。
 0000           ;       4、RW1用于调节显示屏的对比度。
 0000           ; 
 0000           ;       AVR  mega128学习板
 0000           ;       www.iccavr.com 阿发
 0000           ;       16:22 2007-10-18
 0000           ; */
 0000           ; 
 0000           ; #include <iom128v.h>
 0000           ; #include "font.h"
 0000           ; #include "lcd12864.h"
 0000           ; 
 0000           ; /*IO口初始化函数*/
 0000           ; void io_init(void) {
 0000                   .dbline 21
 0000           ; 
 0000           ;       DDRA = 0xFF;                                                                            /*方向输出*/
 0000 8FEF              ldi R24,255
 0002 8ABB              out 0x1a,R24
 0004                   .dbline 22
 0004           ;       PORTA = 0xFF;                                                                           /*高电平*/
 0004 8BBB              out 0x1b,R24
 0006                   .dbline 23
 0006           ;       DDRB = 0x00;                                                                            /*方向输入*/
 0006 2224              clr R2
 0008 27BA              out 0x17,R2
 000A                   .dbline 24
 000A           ;       PORTB = 0xFF;                                                                           /*打开上拉*/
 000A 88BB              out 0x18,R24
 000C                   .dbline 25
 000C           ;       DDRC = 0xFF;                                                                            /*不用的IO口建议设置为输入带上拉*/
 000C 84BB              out 0x14,R24
 000E                   .dbline 26
 000E           ;       PORTC = 0x00;
 000E 25BA              out 0x15,R2
 0010                   .dbline 27
 0010           ;       DDRD = 0x00;
 0010 21BA              out 0x11,R2
 0012                   .dbline 28
 0012           ;       PORTD = 0xFF;
 0012 82BB              out 0x12,R24
 0014                   .dbline 29
 0014           ;       DDRE = 0x00;
 0014 22B8              out 0x2,R2
 0016                   .dbline 30
 0016           ;       PORTE = 0xFF;
 0016 83B9              out 0x3,R24
 0018                   .dbline 31
 0018           ;       DDRF = 0x00;
 0018 E1E6              ldi R30,97
 001A F0E0              ldi R31,0
 001C 2082              std z+0,R2
 001E                   .dbline 32
 001E           ;       PORTF = 0xFF;
 001E E2E6              ldi R30,98
 0020 8083              std z+0,R24
 0022                   .dbline 33
 0022           ;       DDRG = 0x00;
 0022 E4E6              ldi R30,100
 0024 2082              std z+0,R2
 0026                   .dbline 34
 0026           ;       PORTG = 0xFF;
 0026 E5E6              ldi R30,101
 0028 8083              std z+0,R24
 002A                   .dbline -2
 002A           L1:
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbend
 002C                   .dbfunc e get_ad _get_ad fi
 002C           ;              i -> R16,R17
                        .even
 002C           _get_ad::
 002C                   .dbline -1
 002C                   .dbline 36
 002C           ; }
 002C           ; unsigned int get_ad(void) {
 002C                   .dbline 41
 002C           ; 
 002C           ;       unsigned int i;
 002C           ;                                                                                       
 002C           ;       
 002C           ;       ADMUX = (1 << REFS0);                                                           /*基准AVCC、通道0*/
 002C 80E4              ldi R24,64
 002E 87B9              out 0x7,R24
 0030                   .dbline 42
 0030           ;       ADCSRA = (1 << ADEN) | (1 << ADSC)                                      /*使能、开启*/
 0030 83EC              ldi R24,195
 0032 86B9              out 0x6,R24
 0034           L3:
 0034                   .dbline 44
 0034           L4:
 0034                   .dbline 44
 0034           ;                       | (1 << ADPS1) | (1 << ADPS0);                          /*8分频*/
 0034           ;       while(!(ADCSRA & (1 << ADIF)));                                         /*等待采样结束*/
 0034 349B              sbis 0x6,4
 0036 FECF              rjmp L3
 0038                   .dbline 46
 0038           ;       
 0038           ;          i = ADC;                                                /*读取AD结果*/
 0038 04B1              in R16,0x4
 003A 15B1              in R17,0x5
 003C                   .dbline 47
 003C           ;       ADCSRA &= ~(1 << ADIF);                                                         /*清标志*/
 003C 3498              cbi 0x6,4
 003E                   .dbline 48
 003E           ;       ADCSRA &= ~(1 << ADEN);                                                         /*关闭转换*/
 003E 3798              cbi 0x6,7
 0040                   .dbline 50
 0040           ;    
 0040           ;       return i;                                                                               /*返回结果*/
 0040                   .dbline -2
 0040           L2:
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbsym r i 16 i
 0042                   .dbend
 0042                   .dbfunc e main _main fV
 0042           ;              t -> R20,R21
                        .even
 0042           _main::
 0042 2297              sbiw R28,2
 0044                   .dbline -1
 0044                   .dbline 52
 0044           ;      }
 0044           ; void main(void) {
 0044                   .dbline 54
 0044           ; int t;
 0044           ;       io_init();                                                                                      /*IO口初始化*/
 0044 DDDF              xcall _io_init
 0046                   .dbline 55
 0046           ;       disp_init();                                                                            /*LCD初始化*/
 0046 0E940000          xcall _disp_init
 004A                   .dbline 56
 004A           ;       disp_clear(0, 128, 0);                                                          /*清除四行显示*/
 004A 2224              clr R2
 004C 2882              std y+0,R2
 004E 20E8              ldi R18,128
 0050 0027              clr R16
 0052 0E940000          xcall _disp_clear
 0056                   .dbline 57
 0056           ;       disp_clear(0, 128, 2);
 0056 82E0              ldi R24,2
 0058 8883              std y+0,R24
 005A 20E8              ldi R18,128
 005C 0027              clr R16
 005E 0E940000          xcall _disp_clear
 0062                   .dbline 58
 0062           ;       disp_clear(0, 128, 4);
 0062 84E0              ldi R24,4
 0064 8883              std y+0,R24
 0066 20E8              ldi R18,128
 0068 0027              clr R16
 006A 0E940000          xcall _disp_clear
 006E                   .dbline 59
 006E           ;       disp_clear(0, 128, 6);
 006E 86E0              ldi R24,6
 0070 8883              std y+0,R24
 0072 20E8              ldi R18,128
 0074 0027              clr R16
 0076 0E940000          xcall _disp_clear
 007A                   .dbline 62
 007A           ;       
 007A           ;       
 007A           ;       disp_myself(0,0,124);
 007A 8CE7              ldi R24,124
 007C 8883              std y+0,R24
 007E 2227              clr R18
 0080 0027              clr R16
 0082 0E940000          xcall _disp_myself
 0086                   .dbline 63
 0086           ;       disp_myself(0,1,124);
 0086 8CE7              ldi R24,124
 0088 8883              std y+0,R24
 008A 21E0              ldi R18,1
 008C 0027              clr R16
 008E 0E940000          xcall _disp_myself
 0092                   .dbline 64
 0092           ;       disp_myself(0,2,124);
 0092 8CE7              ldi R24,124
 0094 8883              std y+0,R24
 0096 22E0              ldi R18,2
 0098 0027              clr R16
 009A 0E940000          xcall _disp_myself
 009E                   .dbline 65
 009E           ;       disp_myself(0,3,124);
 009E 8CE7              ldi R24,124
 00A0 8883              std y+0,R24
 00A2 23E0              ldi R18,3
 00A4 0027              clr R16
 00A6 0E940000          xcall _disp_myself
 00AA                   .dbline 66
 00AA           ;       disp_myself(0,4,124);
 00AA 8CE7              ldi R24,124
 00AC 8883              std y+0,R24
 00AE 24E0              ldi R18,4
 00B0 0027              clr R16
 00B2 0E940000          xcall _disp_myself
 00B6                   .dbline 67
 00B6           ;       disp_myself(0,5,124);
 00B6 8CE7              ldi R24,124
 00B8 8883              std y+0,R24
 00BA 25E0              ldi R18,5
 00BC 0027              clr R16
 00BE 0E940000          xcall _disp_myself
 00C2                   .dbline 68
 00C2           ;       disp_myself(0,6,124);
 00C2 8CE7              ldi R24,124
 00C4 8883              std y+0,R24
 00C6 26E0              ldi R18,6
 00C8 0027              clr R16
 00CA 0E940000          xcall _disp_myself

⌨️ 快捷键说明

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