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

📄 main.lis

📁 一个关于AVR单片机的例程
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\administrator\桌面\教程\7断数码管\main.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 12
 0000           ; // ICC-AVR application builder : 2007-2-14 21:34:00
 0000           ; // Target : M16
 0000           ; // Crystal: 7.3728Mhz
 0000           ; // 工程DEMO 七段数码管显示演示
 0000           ; 
 0000           ; #include "config.h"
 0000           ; 
 0000           ; extern const led_data[16]; //声明外部led显示数据,led_data在led.c中
 0000           ; uint16 countdata;
 0000           ; 
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 13
 0000           ;  PORTA = 0x00;
 0000 2224              clr R2
 0002 2BBA              out 0x1b,R2
 0004                   .dbline 14
 0004           ;  DDRA  = 0x00;
 0004 2ABA              out 0x1a,R2
 0006                   .dbline 15
 0006           ;  PORTB = 0x00;
 0006 28BA              out 0x18,R2
 0008                   .dbline 16
 0008           ;  DDRB  = 0x00;
 0008 27BA              out 0x17,R2
 000A                   .dbline 17
 000A           ;  PORTC = 0x00; //m103 output only
 000A 25BA              out 0x15,R2
 000C                   .dbline 18
 000C           ;  DDRC  = 0x00;
 000C 24BA              out 0x14,R2
 000E                   .dbline 19
 000E           ;  PORTD = 0x00;
 000E 22BA              out 0x12,R2
 0010                   .dbline 20
 0010           ;  DDRD  = 0x00;
 0010 21BA              out 0x11,R2
 0012                   .dbline -2
 0012           L1:
 0012                   .dbline 0 ; func end
 0012 0895              ret
 0014                   .dbend
 0014                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0014           _timer1_init::
 0014                   .dbline -1
 0014                   .dbline 29
 0014           ; }
 0014           ; /***************************************************************/
 0014           ; //定时器1用于一秒刷新 countdata 的值,达到从1-9999计秒的功能
 0014           ; //TIMER1 initialize - prescale:1024
 0014           ; // WGM: 0) Normal, TOP=0xFFFF
 0014           ; // desired value: 1Sec
 0014           ; // actual value:  1.000Sec (0.0%)
 0014           ; void timer1_init(void)
 0014           ; {
 0014                   .dbline 30
 0014           ;  TCCR1B = 0x00; //stop
 0014 2224              clr R2
 0016 2EBC              out 0x2e,R2
 0018                   .dbline 31
 0018           ;  TCNT1H = 0xE3; //setup
 0018 83EE              ldi R24,227
 001A 8DBD              out 0x2d,R24
 001C                   .dbline 32
 001C           ;  TCNT1L = 0xE1;
 001C 81EE              ldi R24,225
 001E 8CBD              out 0x2c,R24
 0020                   .dbline 33
 0020           ;  OCR1AH = 0x1C;
 0020 8CE1              ldi R24,28
 0022 8BBD              out 0x2b,R24
 0024                   .dbline 34
 0024           ;  OCR1AL = 0x1F;
 0024 8FE1              ldi R24,31
 0026 8ABD              out 0x2a,R24
 0028                   .dbline 35
 0028           ;  OCR1BH = 0x1C;
 0028 8CE1              ldi R24,28
 002A 89BD              out 0x29,R24
 002C                   .dbline 36
 002C           ;  OCR1BL = 0x1F;
 002C 8FE1              ldi R24,31
 002E 88BD              out 0x28,R24
 0030                   .dbline 37
 0030           ;  ICR1H  = 0x1C;
 0030 8CE1              ldi R24,28
 0032 87BD              out 0x27,R24
 0034                   .dbline 38
 0034           ;  ICR1L  = 0x1F;
 0034 8FE1              ldi R24,31
 0036 86BD              out 0x26,R24
 0038                   .dbline 39
 0038           ;  TCCR1A = 0x00;
 0038 2FBC              out 0x2f,R2
 003A                   .dbline 40
 003A           ;  TCCR1B = 0x05; //start Timer
 003A 85E0              ldi R24,5
 003C 8EBD              out 0x2e,R24
 003E                   .dbline -2
 003E           L2:
 003E                   .dbline 0 ; func end
 003E 0895              ret
 0040                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C942000          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 0040                   .dbfile C:\DOCUME~1\administrator\桌面\教程\7断数码管\main.c
 0040                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 0040           _timer1_ovf_isr::
 0040 2A92              st -y,R2
 0042 3A92              st -y,R3
 0044 8A93              st -y,R24
 0046 9A93              st -y,R25
 0048 EA93              st -y,R30
 004A 2FB6              in R2,0x3f
 004C 2A92              st -y,R2
 004E                   .dbline -1
 004E                   .dbline 45
 004E                   .dbline 47
 004E 83EE              ldi R24,227
 0050 8DBD              out 0x2d,R24
 0052                   .dbline 48
 0052 81EE              ldi R24,225
 0054 8CBD              out 0x2c,R24
 0056                   .dbline 49
 0056 80910000          lds R24,_countdata
 005A 90910100          lds R25,_countdata+1
 005E 0196              adiw R24,1
 0060 90930100          sts _countdata+1,R25
 0064 80930000          sts _countdata,R24
 0068                   .dbline 50
 0068 8F30              cpi R24,15
 006A E7E2              ldi R30,39
 006C 9E07              cpc R25,R30
 006E 31F4              brne L4
 0070                   .dbline 50
 0070 2224              clr R2
 0072 3324              clr R3
 0074 30920100          sts _countdata+1,R3
 0078 20920000          sts _countdata,R2
 007C           L4:
 007C                   .dbline -2
 007C           L3:
 007C 2990              ld R2,y+
 007E 2FBE              out 0x3f,R2
 0080 E991              ld R30,y+
 0082 9991              ld R25,y+
 0084 8991              ld R24,y+
 0086 3990              ld R3,y+
 0088 2990              ld R2,y+
 008A                   .dbline 0 ; func end
 008A 1895              reti
 008C                   .dbend
 008C                   .dbfunc e init_devices _init_devices fV
                        .even
 008C           _init_devices::
 008C                   .dbline -1
 008C                   .dbline 56
 008C           ; }
 008C           ; 
 008C           ; #pragma interrupt_handler timer1_ovf_isr:9
 008C           ; void timer1_ovf_isr(void)
 008C           ; {
 008C           ;  //TIMER1 has overflowed
 008C           ;  TCNT1H = 0xE3; //reload counter high value
 008C           ;  TCNT1L = 0xE1; //reload counter low value
 008C           ;  countdata++;
 008C           ;  if(countdata==9999) countdata=0;
 008C           ; }
 008C           ; 
 008C           ; 
 008C           ; //call this routine to initialize all peripherals
 008C           ; void init_devices(void)
 008C           ; {
 008C                   .dbline 58
 008C           ;  //stop errant interrupts until set up
 008C           ;  CLI(); //disable all interrupts
 008C F894              cli
 008E                   .dbline 59
 008E           ;  port_init();
 008E B8DF              xcall _port_init
 0090                   .dbline 60
 0090           ;  led_init(); //7段数码管显示
 0090 0E940000          xcall _led_init
 0094                   .dbline 62
 0094           ;  
 0094           ;  MCUCR = 0x00;
 0094 2224              clr R2
 0096 25BE              out 0x35,R2
 0098                   .dbline 63
 0098           ;  GICR  = 0x00;
 0098 2BBE              out 0x3b,R2
 009A                   .dbline 64
 009A           ;  TIMSK = 0x00; //timer interrupt sources
 009A 29BE              out 0x39,R2
 009C                   .dbline 65
 009C           ;  SEI(); //re-enable interrupts
 009C 7894              sei
 009E                   .dbline -2
 009E           L6:
 009E                   .dbline 0 ; func end
 009E 0895              ret
 00A0                   .dbend
 00A0                   .dbfunc e init_devices2 _init_devices2 fV
                        .even
 00A0           _init_devices2::
 00A0                   .dbline -1
 00A0                   .dbline 73
 00A0           ;  //all peripherals are now initialized
 00A0           ; }
 00A0           ; 
 00A0           ; /**************************************************/
 00A0           ; //只有综合应用才用到本函数
 00A0           ; //call this routine to initialize all peripherals
 00A0           ; void init_devices2(void)
 00A0           ; {
 00A0                   .dbline 75
 00A0           ;  //stop errant interrupts until set up
 00A0           ;  CLI(); //disable all interrupts
 00A0 F894              cli
 00A2                   .dbline 76
 00A2           ;  port_init();
 00A2 AEDF              xcall _port_init
 00A4                   .dbline 77
 00A4           ;  led_init(); //7段数码管显示
 00A4 0E940000          xcall _led_init
 00A8                   .dbline 78
 00A8           ;  timer1_init(); //定时器1用于更新countdata的值,从1到9999变化
 00A8 B5DF              xcall _timer1_init
 00AA                   .dbline 80
 00AA           ;  
 00AA           ;  MCUCR = 0x00;
 00AA 2224              clr R2
 00AC 25BE              out 0x35,R2
 00AE                   .dbline 81
 00AE           ;  GICR  = 0x00;
 00AE 2BBE              out 0x3b,R2
 00B0                   .dbline 82
 00B0           ;  TIMSK = 0x04; //注意这里允许定时器一溢出
 00B0 84E0              ldi R24,4
 00B2 89BF              out 0x39,R24
 00B4                   .dbline 83
 00B4           ;  SEI(); //re-enable interrupts
 00B4 7894              sei
 00B6                   .dbline -2
 00B6           L7:
 00B6                   .dbline 0 ; func end
 00B6 0895              ret
 00B8                   .dbend
 00B8                   .dbfunc e main _main fV
                        .even
 00B8           _main::
 00B8                   .dbline -1
 00B8                   .dbline 93
 00B8           ;  //all peripherals are now initialized
 00B8           ; }
 00B8           ; /******************************************************************************/
 00B8           ; //以下显示模式只保留一个,查看效果
 00B8           ; /******************************************************************************/
 00B8           ; 
 00B8           ; //综合应用例子
 00B8           ; 
 00B8           ; void main(void)
 00B8           ; {
 00B8                   .dbline 94
 00B8           ;  init_devices2(); //比init_devices()多了timer1_init(),TIMSK = 0x04;
 00B8 F3DF              xcall _init_devices2
 00BA 07C0              xjmp L10
 00BC           L9:
 00BC                   .dbline 96
 00BC                   .dbline 97
 00BC 2227              clr R18
 00BE 00910000          lds R16,_countdata
 00C2 10910100          lds R17,_countdata+1
 00C6 0E940000          xcall _display
 00CA                   .dbline 98
 00CA           L10:
 00CA                   .dbline 95
 00CA F8CF              xjmp L9
 00CC           X0:
 00CC                   .dbline -2
 00CC           L8:
 00CC                   .dbline 0 ; func end
 00CC 0895              ret
 00CE                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\administrator\桌面\教程\7断数码管\main.c
 0000           _countdata::
 0000                   .blkb 2
 0002                   .dbsym e countdata _countdata i

⌨️ 快捷键说明

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