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

📄 eeprom.lis

📁 //实验板的AVR程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0040                   .dbline -1
 0040                   .dbline 88
 0040           ; }
 0040           ; /********************************************************
 0040           ;   子程序名:   usart_Init()
 0040           ;   功    能:   串口初始化
 0040           ;   输入参数:   /
 0040           ;   输出参数:   /
 0040           ;   描    述:   /
 0040           ; ********************************************************/
 0040           ; void usart_Init (void)
 0040           ; {
 0040                   .dbline 89
 0040           ;        CLI();    //关闭中断
 0040 F894              cli
 0042                   .dbline 90
 0042           ;        UBRRL= (F_CPU/BAUDRATE/16-1)%256;
 0042 83E3              ldi R24,51
 0044 89B9              out 0x9,R24
 0046                   .dbline 91
 0046           ;      UBRRH= (F_CPU/BAUDRATE/16-1)/256;
 0046 2224              clr R2
 0048 20BC              out 0x20,R2
 004A                   .dbline 93
 004A           ;        //UBRRL=51; //波特率寄存器,UART:9600bps,8.000MHz
 004A           ;        UCSRB = (1<<RXEN)|(1<<TXEN)|(1<<RXCIE);  //接收结束中断使能,RXD&TXD使能
 004A 88E9              ldi R24,152
 004C 8AB9              out 0xa,R24
 004E                   .dbline 94
 004E           ;        UCSRC = (1<<URSEL)|(1<<UPM1)|(1<<UCSZ0)|(1<<UCSZ1);
 004E 86EA              ldi R24,166
 0050 80BD              out 0x20,R24
 0052                   .dbline -2
 0052           L19:
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbend
 0054                   .dbfunc e EEPROM_write _EEPROM_write fV
 0054           ;          uData -> R18
 0054           ;          uAddr -> R16,R17
                        .even
 0054           _EEPROM_write::
 0054                   .dbline -1
 0054                   .dbline 106
 0054           ;         //访问UCSRC寄存器,偶校验,8个数据位,默认一个停止位,
 0054           ;        //SEI();      //开全局中断使能
 0054           ; }
 0054           ; /********************************************************
 0054           ;   子程序名:   EEPROM_write
 0054           ;   功    能:   写一字节数据到片内指定地址单元
 0054           ;   输入参数:   /
 0054           ;   输出参数:   /
 0054           ;   描    述:   /
 0054           ; ********************************************************/
 0054           ; void EEPROM_write(uint uAddr,uchar uData)
 0054           ; {
 0054                   .dbline 107
 0054           ;        EEAR = uAddr;              //写操作的16位地址寄存器
 0054 1FBB              out 0x1f,R17
 0056 0EBB              out 0x1e,R16
 0058                   .dbline 108
 0058           ;        EEDR = uData;              //写数据到数据寄存器
 0058 2DBB              out 0x1d,R18
 005A                   .dbline 109
 005A           ;        EECR |= (1<<EEMWE);        //允许EEPROM操作
 005A E29A              sbi 0x1c,2
 005C                   .dbline 110
 005C           ;        EECR |= (1<<EEWE);         //开始写操作
 005C E19A              sbi 0x1c,1
 005E           L21:
 005E                   .dbline 112
 005E           L22:
 005E                   .dbline 111
 005E           ;        while (EECR & (1<<EEWE))   //等待写操作完成
 005E E199              sbic 0x1c,1
 0060 FECF              rjmp L21
 0062                   .dbline -2
 0062           L20:
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbsym r uData 18 c
 0064                   .dbsym r uAddr 16 i
 0064                   .dbend
 0064                   .dbfunc e EEPROM_read _EEPROM_read fc
 0064           ;          uAddr -> R16,R17
                        .even
 0064           _EEPROM_read::
 0064                   .dbline -1
 0064                   .dbline 122
 0064           ;        ;
 0064           ; }
 0064           ; /********************************************************
 0064           ;   子程序名:   EEPROM_read
 0064           ;   功    能:   从片内指定地址单元读一字节数据
 0064           ;   输入参数:   /
 0064           ;   输出参数:   /
 0064           ;   描    述:   /
 0064           ; ********************************************************/
 0064           ; uchar EEPROM_read(uint uAddr)
 0064           ; {
 0064           L25:
 0064                   .dbline 124
 0064           L26:
 0064                   .dbline 123
 0064           ;      while (EECR & (1<<EEWE))   //等待前一次写操作完成
 0064 E199              sbic 0x1c,1
 0066 FECF              rjmp L25
 0068                   .dbline 125
 0068           ;        ;
 0068           ;        EEAR = uAddr;              //写操作的16位地址寄存器
 0068 1FBB              out 0x1f,R17
 006A 0EBB              out 0x1e,R16
 006C                   .dbline 126
 006C           ;        EECR |= (1<<EERE);         //开始读操作
 006C E09A              sbi 0x1c,0
 006E                   .dbline 127
 006E           ;        return EEDR;               //输出读出的数据
 006E 0DB3              in R16,0x1d
 0070                   .dbline -2
 0070           L24:
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbsym r uAddr 16 i
 0072                   .dbend
 0072                   .dbfunc e main _main fV
 0072           ;           temp -> <dead>
 0072           ;              i -> R20
 0072           ;              k -> R22
 0072           ;              j -> R20
                        .even
 0072           _main::
 0072                   .dbline -1
 0072                   .dbline 131
 0072           ; }
 0072           ; //*****************主程序**********************************
 0072           ; void main (void)
 0072           ; {
 0072                   .dbline 133
 0072           ;      uchar temp,i,j,k;
 0072           ;      mcu_Init();       //单片机初始化
 0072 E3DF              rcall _mcu_Init
 0074                   .dbline 134
 0074           ;        usart_Init();   //串口初始化
 0074 E5DF              rcall _usart_Init
 0076                   .dbline 135
 0076           ;        i=EEPROM_read(0x10);     //读片内EEPROM地址为0x10的数据,
 0076 00E1              ldi R16,16
 0078 10E0              ldi R17,0
 007A F4DF              rcall _EEPROM_read
 007C 402F              mov R20,R16
 007E                   .dbline 136
 007E           ;        Send_word(i);           //发送数据到PC,这个数是掉电前保存的。
 007E D5DF              rcall _Send_word
 0080 0BC0              rjmp L30
 0082           L29:
 0082                   .dbline 138
 0082                   .dbline 139
 0082 D7DF              rcall _receive_word
 0084 402F              mov R20,R16
 0086                   .dbline 140
 0086 242F              mov R18,R20
 0088 00E1              ldi R16,16
 008A 10E0              ldi R17,0
 008C E3DF              rcall _EEPROM_write
 008E                   .dbline 142
 008E 00E1              ldi R16,16
 0090 10E0              ldi R17,0
 0092 E8DF              rcall _EEPROM_read
 0094 602F              mov R22,R16
 0096                   .dbline 143
 0096 C9DF              rcall _Send_word
 0098                   .dbline 144
 0098           L30:
 0098                   .dbline 137
 0098 F4CF              rjmp L29
 009A           X0:
 009A                   .dbline -2
 009A           L28:
 009A                   .dbline 0 ; func end
 009A 0895              ret
 009C                   .dbsym l temp 1 c
 009C                   .dbsym r i 20 c
 009C                   .dbsym r k 22 c
 009C                   .dbsym r j 20 c
 009C                   .dbend

⌨️ 快捷键说明

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