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

📄 m8demo.lis

📁 AVR系列被广泛应用的单片机MEGA8开发(原理图)及例程
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module M8Demo.c
                        .area data(ram, con, rel)
 0000           _out_eeprom_addr::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
 0001                   .dbsym e out_eeprom_addr _out_eeprom_addr c
 0001           _in_eeprom_addr::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
 0002                   .dbsym e in_eeprom_addr _in_eeprom_addr c
 0002           _adc_value::
 0002                   .blkb 2
                        .area idata
 0002 0000              .word 0
                        .area data(ram, con, rel)
 0004                   .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
 0004                   .dbsym e adc_value _adc_value i
 0004           _AT45DB021_addr::
 0004                   .blkb 1
                        .area idata
 0004 00                .byte 0
                        .area data(ram, con, rel)
 0005                   .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
 0005                   .dbsym e AT45DB021_addr _AT45DB021_addr c
 0005           _Display_Position::
 0005                   .blkb 1
                        .area idata
 0005 00                .byte 0
                        .area data(ram, con, rel)
 0006                   .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
 0006                   .dbsym e Display_Position _Display_Position c
                        .area lit(rom, con, rel)
 0000           _DataTab::
 0000 C0F9              .byte 192,249
 0002 A4B0              .byte 164,176
 0004 9992              .byte 153,146
 0006 82F8              .byte 130,248
 0008 8090              .byte 128,144
 000A 8883              .byte 136,131
 000C C6A1              .byte 198,161
 000E 868E              .byte 134,142
 0010                   .dbsym e DataTab _DataTab A[16:16]kc
                        .area text(rom, con, rel)
 0000                   .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
 0000                   .dbfunc e Delay _Delay fV
 0000           ;     delay_time -> R16,R17
                        .even
 0000           _Delay::
 0000                   .dbline -1
 0000                   .dbline 37
 0000           ; //ICC-AVR application builder : 2003-11-10 10:04:46
 0000           ; // Target : M8
 0000           ; // Crystal: 7.3728Mhz
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; #include "M8Demo.h"
 0000           ; #include"I2C.H"
 0000           ; #include "Eeprom.h"
 0000           ; #include "AT45DB021.h"
 0000           ; #include "Uart.h"
 0000           ; #include "assembly.h"
 0000           ; unsigned int  DelayTimer;
 0000           ; unsigned int  TimerCount;
 0000           ; unsigned int  TimerCountOld;
 0000           ; unsigned int  key_tick;
 0000           ; unsigned char key_state;
 0000           ; unsigned char key_value;
 0000           ; unsigned char  key_pressed;
 0000           ; unsigned char mode_state;
 0000           ; 
 0000           ; unsigned  char *OutPutStr;
 0000           ; unsigned char out_eeprom_data;
 0000           ; unsigned char  out_eeprom_addr=0;
 0000           ; unsigned char in_eeprom_data;
 0000           ; unsigned char  in_eeprom_addr=0;
 0000           ; unsigned int    adc_value=0;
 0000           ; unsigned char  AT45DB021_data;
 0000           ; unsigned char  AT45DB021_addr=0;
 0000           ; unsigned char  Display_Position=0;
 0000           ; 
 0000           ; const char DataTab[16]=
 0000           ;       {0xc0,0xf9,0xa4,0xb0,0x99,0x92,
 0000           ;         0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8E};
 0000           ; 
 0000           ; 
 0000           ; void Delay(unsigned int delay_time)
 0000           ; {
 0000 02C0              rjmp L3
 0002           L2:
 0002                   .dbline 39
 0002 0150              subi R16,1
 0004 1040              sbci R17,0
 0006           L3:
 0006                   .dbline 38
 0006           ; while(delay_time)
 0006 0030              cpi R16,0
 0008 0107              cpc R16,R17
 000A D9F7              brne L2
 000C           X0:
 000C                   .dbline -2
 000C           L1:
 000C                   .dbline 0 ; func end
 000C 0895              ret
 000E                   .dbsym r delay_time 16 i
 000E                   .dbend
 000E                   .dbfunc e Delayms _Delayms fV
 000E           ;         timers -> R16,R17
                        .even
 000E           _Delayms::
 000E                   .dbline -1
 000E                   .dbline 43
 000E           ; delay_time--;
 000E           ; }
 000E           ; 
 000E           ; void Delayms(unsigned int timers)
 000E           ; { 
 000E                   .dbline 44
 000E           ; DelayTimer=0;
 000E 2224              clr R2
 0010 3324              clr R3
 0012 30921000          sts _DelayTimer+1,R3
 0016 20920F00          sts _DelayTimer,R2
 001A 08C0              rjmp L7
 001C           L6:
 001C                   .dbline 46
 001C           ; while(1)
 001C           ; {if(DelayTimer>timers)
 001C                   .dbline 46
 001C 20900F00          lds R2,_DelayTimer
 0020 30901000          lds R3,_DelayTimer+1
 0024 0215              cp R16,R2
 0026 1305              cpc R17,R3
 0028 08F4              brsh L9
 002A                   .dbline 47
 002A           ; return;
 002A 01C0              rjmp L5
 002C           L9:
 002C                   .dbline 48
 002C           L7:
 002C                   .dbline 45
 002C F7CF              rjmp L6
 002E           X1:
 002E                   .dbline -2
 002E           L5:
 002E                   .dbline 0 ; func end
 002E 0895              ret
 0030                   .dbsym r timers 16 i
 0030                   .dbend
 0030                   .dbfunc e port_init _port_init fV
                        .even
 0030           _port_init::
 0030                   .dbline -1
 0030                   .dbline 52
 0030           ; }
 0030           ; }
 0030           ; 
 0030           ; void port_init(void)
 0030           ; {
 0030                   .dbline 53
 0030           ;  PORTB = 0xFF;
 0030 8FEF              ldi R24,255
 0032 88BB              out 0x18,R24
 0034                   .dbline 54
 0034           ;  DDRB  = 0xFF;
 0034 87BB              out 0x17,R24
 0036                   .dbline 55
 0036           ;  PORTC = 0x7F; //m103 output only
 0036 8FE7              ldi R24,127
 0038 85BB              out 0x15,R24
 003A                   .dbline 56
 003A           ;  DDRC  = 0x79;
 003A 89E7              ldi R24,121
 003C 84BB              out 0x14,R24
 003E                   .dbline 57
 003E           ;  PORTD = 0xFF;
 003E 8FEF              ldi R24,255
 0040 82BB              out 0x12,R24
 0042                   .dbline 58
 0042           ;  DDRD  = 0xFC;
 0042 8CEF              ldi R24,252
 0044 81BB              out 0x11,R24
 0046                   .dbline -2
 0046           L11:
 0046                   .dbline 0 ; func end
 0046 0895              ret
 0048                   .dbend
 0048                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0048           _timer0_init::
 0048                   .dbline -1
 0048                   .dbline 66
 0048           ; }
 0048           ; 
 0048           ; //TIMER0 initialisation - prescale:1024
 0048           ; // WGM: Normal
 0048           ; // desired value: 10mSec
 0048           ; // actual value: 10.000mSec (0.0%)
 0048           ; void timer0_init(void)
 0048           ; {
 0048                   .dbline 67
 0048           ;   TCCR0 = 0x00; //stop
 0048 2224              clr R2
 004A 23BE              out 0x33,R2
 004C                   .dbline 68
 004C           ;  TCNT0 = 0x8D; //set count
 004C 8DE8              ldi R24,141
 004E 82BF              out 0x32,R24
 0050                   .dbline 69
 0050           ;  TCCR0 = 0x03; //start timer
 0050 83E0              ldi R24,3
 0052 83BF              out 0x33,R24
 0054                   .dbline -2
 0054           L12:
 0054                   .dbline 0 ; func end
 0054 0895              ret
 0056                   .dbend
                        .area vector(rom, abs)
                        .org 18
 0012 2BC0              rjmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 0056                   .dbfile D:\Datasheet\Atmel\FROMJI~1\AVR_Demo\m8\SoftWare\M8Demo.c
 0056                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 0056           _timer0_ovf_isr::
 0056 00D0              rcall push_lset
 0058 00D0              rcall push_gset1
 005A                   .dbline -1
 005A                   .dbline 75
 005A           ;  
 005A           ; }
 005A           ; 
 005A           ; #pragma interrupt_handler timer0_ovf_isr:10
 005A           ; void timer0_ovf_isr(void)
 005A           ; {
 005A                   .dbline 76
 005A           ;  TCNT0 = 0x8D; //reload counter value
 005A 8DE8              ldi R24,141
 005C 82BF              out 0x32,R24
 005E                   .dbline 79
 005E           ;  // TCNT0 = 0xA4; //reload counter value
 005E           ; 
 005E           ;   DelayTimer++;
 005E 80910F00          lds R24,_DelayTimer
 0062 90911000          lds R25,_DelayTimer+1
 0066 0196              adiw R24,1
 0068 90931000          sts _DelayTimer+1,R25
 006C 80930F00          sts _DelayTimer,R24
 0070                   .dbline 80
 0070           ;   key_tick++;
 0070 80910900          lds R24,_key_tick
 0074 90910A00          lds R25,_key_tick+1
 0078 0196              adiw R24,1
 007A 90930A00          sts _key_tick+1,R25
 007E 80930900          sts _key_tick,R24
 0082                   .dbline 81
 0082           ;     Display_Position++;
 0082 80910500          lds R24,_Display_Position
 0086 8F5F              subi R24,255    ; addi 1
 0088 80930500          sts _Display_Position,R24
 008C                   .dbline 82
 008C           ;  if(Display_Position>=5)
 008C 8530              cpi R24,5
 008E 18F0              brlo L14
 0090                   .dbline 83
 0090           ;       Display_Position=1;
 0090 81E0              ldi R24,1
 0092 80930500          sts _Display_Position,R24
 0096           L14:
 0096                   .dbline 85
 0096           ; 
 0096           ;    switch(mode_state)
 0096 40910500          lds R20,_mode_state
 009A 5527              clr R21
 009C 4030              cpi R20,0
 009E 4507              cpc R20,R21
 00A0 29F1              breq L19
 00A2           X2:
 00A2 4130              cpi R20,1
 00A4 E0E0              ldi R30,0
 00A6 5E07              cpc R21,R30
 00A8 39F1              breq L20
 00AA 4230              cpi R20,2
 00AC E0E0              ldi R30,0
 00AE 5E07              cpc R21,R30
 00B0 19F1              breq L20
 00B2 4330              cpi R20,3
 00B4 E0E0              ldi R30,0
 00B6 5E07              cpc R21,R30
 00B8 F9F0              breq L20
 00BA 4430              cpi R20,4
 00BC E0E0              ldi R30,0
 00BE 5E07              cpc R21,R30
 00C0 09F1              breq L21
 00C2 4530              cpi R20,5
 00C4 E0E0              ldi R30,0
 00C6 5E07              cpc R21,R30
 00C8 E9F0              breq L21
 00CA 4630              cpi R20,6
 00CC E0E0              ldi R30,0
 00CE 5E07              cpc R21,R30
 00D0 C9F0              breq L21
 00D2 4730              cpi R20,7
 00D4 E0E0              ldi R30,0
 00D6 5E07              cpc R21,R30
 00D8 D9F0              breq L22
 00DA 4830              cpi R20,8
 00DC E0E0              ldi R30,0
 00DE 5E07              cpc R21,R30
 00E0 E9F0              breq L23
 00E2 4930              cpi R20,9
 00E4 E0E0              ldi R30,0
 00E6 5E07              cpc R21,R30
 00E8 C9F0              breq L23
 00EA 1DC0              rjmp L17
 00EC           X3:
 00EC                   .dbline 86
 00EC           ;                       {
 00EC           L19:
 00EC                   .dbline 87
 00EC           ;                         case clock_mode: DisplayTimer(TimerCount);break;
 00EC 00910D00          lds R16,_TimerCount
 00F0 10910E00          lds R17,_TimerCount+1
 00F4 64D1              rcall _DisplayTimer
 00F6                   .dbline 87
 00F6 17C0              rjmp L17
 00F8           L20:
 00F8                   .dbline 90
 00F8           ;                               case out_eeprom_addr_modify_mode:
 00F8           ;                               case out_eeprom_data_modify_mode:
 00F8           ;                               case out_eeprom_read_mode:DisplayHexData(out_eeprom_addr,out_eeprom_data);break;
 00F8 20910200          lds R18,_out_eeprom_data
 00FC 00910000          lds R16,_out_eeprom_addr
 0100 BDD0              rcall _DisplayHexData

⌨️ 快捷键说明

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