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

📄 main.lis

📁 avr mega16 读取内部EEPRom
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module main.c
                        .area lit(rom, con, rel)
 0000           _tab::
 0000 3F06              .byte 63,6
 0002 5B4F              .byte 91,'O
 0004 666D              .byte 'f,'m
 0006 7D07              .byte 125,7
 0008 7F6F              .byte 127,'o
 000A                   .dbfile D:\YM200\内部EEPROM\main.c
 000A                   .dbsym e tab _tab A[10:10]kc
                        .area data(ram, con, rel)
 0000                   .dbfile D:\YM200\内部EEPROM\main.c
 0000           _buff::
 0000                   .blkb 2
                        .area idata
 0000 0000              .byte 0,0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\YM200\内部EEPROM\main.c
 0002                   .blkb 2
                        .area idata
 0002 0000              .byte 0,0
                        .area data(ram, con, rel)
 0004                   .dbfile D:\YM200\内部EEPROM\main.c
 0004                   .blkb 2
                        .area idata
 0004 0000              .byte 0,0
                        .area data(ram, con, rel)
 0006                   .dbfile D:\YM200\内部EEPROM\main.c
 0006                   .blkb 2
                        .area idata
 0006 0000              .byte 0,0
                        .area data(ram, con, rel)
 0008                   .dbfile D:\YM200\内部EEPROM\main.c
 0008                   .dbsym e buff _buff A[8:8]c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\YM200\内部EEPROM\main.c
 0000                   .dbfunc e delay _delay fV
 0000           ;              x -> R16,R17
                        .even
 0000           _delay::
 0000                   .dbline -1
 0000                   .dbline 24
 0000           ; /*内部EEPROM读写实验,本实验涉及数码管串行显示,建议在掌握数码管串行显示的
 0000           ; 基础上,来学习本例程。本实验可记录系统启动次数,每启动一次,数码管显示数据
 0000           ; 加一,此数据保存于ATmega16内部EEPROM中。*/
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; #include <led.h>
 0000           ; 
 0000           ; #define uchar unsigned char
 0000           ; #define uint unsigned int
 0000           ; 
 0000           ; const uchar tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管段码
 0000           ; uchar buff[8]={0,0,0,0,0,0,0,0};                          //8位显示缓冲区
 0000           ; 
 0000           ; 
 0000           ; extern void EEPROM_write(unsigned int addr, unsigned char dd);
 0000           ; extern void EEPROM_read(unsigned int addr,unsigned char *dd);
 0000           ; 
 0000           ; /*-------------------------------------------------------------------
 0000           ; delay      :短延时函数
 0000           ; 输入参数 x :粗略延时,x越大,延时越长
 0000           ; 输出参数   :无
 0000           ; --------------------------------------------------------------------*/
 0000           ; void delay(unsigned int x)
 0000           ; {
 0000           L2:
 0000                   .dbline 25
 0000           L3:
 0000                   .dbline 25
 0000           ;   while(x--);
 0000 1801              movw R2,R16
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006 2220              tst R2
 0008 D9F7              brne L2
 000A 3320              tst R3
 000C C9F7              brne L2
 000E           X0:
 000E                   .dbline -2
 000E           L1:
 000E                   .dbline 0 ; func end
 000E 0895              ret
 0010                   .dbsym r x 16 i
 0010                   .dbend
 0010                   .dbfunc e L_delay _L_delay fV
 0010           ;              y -> R20,R21
                        .even
 0010           _L_delay::
 0010 0E940000          xcall push_gset1
 0014 A801              movw R20,R16
 0016                   .dbline -1
 0016                   .dbline 33
 0016           ;  }
 0016           ; /*------------------------------------------------------------------
 0016           ; L_delay     :长延时函数
 0016           ; 输入参数 y  :粗略延时,y越大,延时越长
 0016           ; 输出参数    :无
 0016           ; --------------------------------------------------------------------*/
 0016           ; void L_delay(unsigned int y)
 0016           ; {
 0016 03C0              xjmp L7
 0018           L6:
 0018                   .dbline 34
 0018 08EE              ldi R16,65000
 001A 1DEF              ldi R17,253
 001C F1DF              xcall _delay
 001E           L7:
 001E                   .dbline 34
 001E           ;   while(y--) delay(65000);
 001E 1A01              movw R2,R20
 0020 4150              subi R20,1
 0022 5040              sbci R21,0
 0024 2220              tst R2
 0026 C1F7              brne L6
 0028 3320              tst R3
 002A B1F7              brne L6
 002C           X1:
 002C                   .dbline -2
 002C           L5:
 002C 0E940000          xcall pop_gset1
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbsym r y 20 i
 0032                   .dbend
 0032                   .dbfunc e PORT_init _PORT_init fV
                        .even
 0032           _PORT_init::
 0032                   .dbline -1
 0032                   .dbline 42
 0032           ;  }
 0032           ; /*-----------------------------------------------------------
 0032           ; PORT_init   :端口初始化函数
 0032           ; 输入参数    :无
 0032           ; 输出参数    :无
 0032           ; ------------------------------------------------------------*/
 0032           ; void PORT_init(void)
 0032           ; {
 0032                   .dbline 43
 0032           ;   LED_DATA_DDR|=LED_NCS|LED_SCK|LED_MOSI;       //设置为输出
 0032 8AB3              in R24,0x1a
 0034 8C61              ori R24,28
 0036 8ABB              out 0x1a,R24
 0038                   .dbline 44
 0038           ;   LED_SEL_DDR |=LED_SELA|LED_SELB|LED_SELC;     //设置为输出
 0038 8AB3              in R24,0x1a
 003A 806E              ori R24,224
 003C 8ABB              out 0x1a,R24
 003E                   .dbline 46
 003E           ;    
 003E           ;   LED_DATA_PORT&=~(LED_NCS|LED_SCK|LED_MOSI);   //输出0
 003E 8BB3              in R24,0x1b
 0040 837E              andi R24,227
 0042 8BBB              out 0x1b,R24
 0044                   .dbline 47
 0044           ;   LED_SEL_PORT &=~(LED_SELA|LED_SELB|LED_SELC); //输出0
 0044 8BB3              in R24,0x1b
 0046 8F71              andi R24,31
 0048 8BBB              out 0x1b,R24
 004A                   .dbline 49
 004A           ;    
 004A           ;   PORTC=0xff;
 004A 8FEF              ldi R24,255
 004C 85BB              out 0x15,R24
 004E                   .dbline 50
 004E           ;   DDRC=0x00;
 004E 2224              clr R2
 0050 24BA              out 0x14,R2
 0052                   .dbline -2
 0052           L9:
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbend
 0054                   .dbfunc e disp _disp fV
 0054           ;              i -> R20
 0054           ;             aa -> R22
 0054           ;              j -> R10
                        .even
 0054           _disp::
 0054 0E940000          xcall push_gset3
 0058                   .dbline -1
 0058                   .dbline 58
 0058           ; }
 0058           ; /*-----------------------------------------------------------
 0058           ; disp        :数码管显示函数
 0058           ; 输入参数    :无
 0058           ; 输出参数    :无
 0058           ; ------------------------------------------------------------*/
 0058           ; void disp(void)
 0058           ; {
 0058                   .dbline 61
 0058           ;   uchar aa,i,j;
 0058           ;   
 0058           ;   for(i=0;i<8;i++)
 0058 4427              clr R20
 005A 3DC0              xjmp L14
 005C           L11:
 005C                   .dbline 62
 005C           ;   {
 005C                   .dbline 63
 005C           ;     aa=~tab[buff[7-i]];
 005C 242E              mov R2,R20
 005E 3324              clr R3
 0060 E7E0              ldi R30,7
 0062 F0E0              ldi R31,0
 0064 E219              sub R30,R2
 0066 F309              sbc R31,R3
 0068 80E0              ldi R24,<_buff
 006A 90E0              ldi R25,>_buff

⌨️ 快捷键说明

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