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

📄 main.lis

📁 是一款开发板的外围电路试验程序(附有原理图)
💻 LIS
字号:
                        .module main.c
                        .area data(ram, con, rel)
 0000           _seg7::
 0000                   .blkb 2
                        .area idata
 0000 C0F9              .byte 192,249
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 A4B0              .byte 164,176
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 9992              .byte 153,146
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 82F8              .byte 130,248
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 8090              .byte 128,144
                        .area data(ram, con, rel)
 000A                   .dbfile F:\最新\数码管/seg7.h
 000A                   .dbsym e seg7 _seg7 A[10:10]c
 000A           _addr::
 000A                   .blkb 1
                        .area idata
 000A 01                .byte 1
                        .area data(ram, con, rel)
 000B                   .dbfile F:\最新\数码管/seg7.h
 000B                   .dbfile F:\最新\数码管\main.c
 000B                   .dbsym e addr _addr c
 000B           _ldata::
 000B                   .blkb 1
                        .area idata
 000B 00                .byte 0
                        .area data(ram, con, rel)
 000C                   .dbfile F:\最新\数码管\main.c
 000C                   .dbsym e ldata _ldata c
 000C           _jdata::
 000C                   .blkb 1
                        .area idata
 000C 00                .byte 0
                        .area data(ram, con, rel)
 000D                   .dbfile F:\最新\数码管\main.c
 000D                   .dbsym e jdata _jdata c
 000D           _i::
 000D                   .blkb 1
                        .area idata
 000D 00                .byte 0
                        .area data(ram, con, rel)
 000E                   .dbfile F:\最新\数码管\main.c
 000E                   .dbsym e i _i c
 000E           _kdata::
 000E                   .blkb 2
                        .area idata
 000E 0102              .byte 1,2
                        .area data(ram, con, rel)
 0010                   .dbfile F:\最新\数码管\main.c
 0010                   .blkb 2
                        .area idata
 0010 0304              .byte 3,4
                        .area data(ram, con, rel)
 0012                   .dbfile F:\最新\数码管\main.c
 0012                   .blkb 2
                        .area idata
 0012 0506              .byte 5,6
                        .area data(ram, con, rel)
 0014                   .dbfile F:\最新\数码管\main.c
 0014                   .blkb 2
                        .area idata
 0014 0708              .byte 7,8
                        .area data(ram, con, rel)
 0016                   .dbfile F:\最新\数码管\main.c
 0016                   .dbsym e kdata _kdata A[8:8]c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\最新\数码管\main.c
 0000                   .dbfunc e port_init _port_init fV
                        .even
 0000           _port_init::
 0000                   .dbline -1
 0000                   .dbline 14
 0000           ; //ICC-AVR application builder : 2007-6-11 20:45:01
 0000           ; // Target : M16
 0000           ; // Crystal: 4.0000Mhz
 0000           ; //使用了PA口和PB口,其中PA口作为数据口,PB口作为地址口。
 0000           ; //该程序使用了定时器T0,采用循环扫描方式显示8位数据
 0000           ; #include "seg7.h"
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; unsigned char addr=1,ldata = 0,jdata = 0,i=0;
 0000           ; 
 0000           ; unsigned char kdata[] = {1,2,3,4,5,6,7,8};
 0000           ; void port_init(void)
 0000           ; {
 0000                   .dbline 15
 0000           ;  PORTA = 0xFF;
 0000 8FEF              ldi R24,255
 0002 8BBB              out 0x1b,R24
 0004                   .dbline 16
 0004           ;  DDRA  = 0xFF;
 0004 8ABB              out 0x1a,R24
 0006                   .dbline 17
 0006           ;  PORTB = 0xFF;
 0006 88BB              out 0x18,R24
 0008                   .dbline 18
 0008           ;  DDRB  = 0xFF;
 0008 87BB              out 0x17,R24
 000A                   .dbline 19
 000A           ;  PORTC = 0x00; //m103 output only
 000A 2224              clr R2
 000C 25BA              out 0x15,R2
 000E                   .dbline 20
 000E           ;  DDRC  = 0x00;
 000E 24BA              out 0x14,R2
 0010                   .dbline 21
 0010           ;  PORTD = 0x00;
 0010 22BA              out 0x12,R2
 0012                   .dbline 22
 0012           ;  DDRD  = 0x00;
 0012 21BA              out 0x11,R2
 0014                   .dbline -2
 0014           L1:
 0014                   .dbline 0 ; func end
 0014 0895              ret
 0016                   .dbend
 0016                   .dbfunc e timer0_init _timer0_init fV
                        .even
 0016           _timer0_init::
 0016                   .dbline -1
 0016                   .dbline 30
 0016           ; }
 0016           ; 
 0016           ; //TIMER0 initialize - prescale:64
 0016           ; // WGM: Normal
 0016           ; // desired value: 1KHz
 0016           ; // actual value:  1.008KHz (0.8%)
 0016           ; void timer0_init(void)
 0016           ; {
 0016                   .dbline 31
 0016           ;  TCCR0 = 0x00; //stop
 0016 2224              clr R2
 0018 23BE              out 0x33,R2
 001A                   .dbline 32
 001A           ;  TCNT0 = 0xC2; //set count
 001A 82EC              ldi R24,194
 001C 82BF              out 0x32,R24
 001E                   .dbline 33
 001E           ;  OCR0  = 0x3E;  //set compare
 001E 8EE3              ldi R24,62
 0020 8CBF              out 0x3c,R24
 0022                   .dbline 34
 0022           ;  TCCR0 = 0x03; //start timer
 0022 83E0              ldi R24,3
 0024 83BF              out 0x33,R24
 0026                   .dbline -2
 0026           L2:
 0026                   .dbline 0 ; func end
 0026 0895              ret
 0028                   .dbend
                        .area vector(rom, abs)
                        .org 36
 0024 0C941400          jmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 0028                   .dbfile F:\最新\数码管\main.c
 0028                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 0028           _timer0_ovf_isr::
 0028 2A92              st -y,R2
 002A 8A93              st -y,R24
 002C 9A93              st -y,R25
 002E EA93              st -y,R30
 0030 FA93              st -y,R31
 0032 2FB6              in R2,0x3f
 0034 2A92              st -y,R2
 0036                   .dbline -1
 0036                   .dbline 39
 0036                   .dbline 40
 0036 82EC              ldi R24,194
 0038 82BF              out 0x32,R24
 003A                   .dbline 41
 003A 20900A00          lds R2,_addr
 003E 28BA              out 0x18,R2
 0040                   .dbline 42
 0040 80E0              ldi R24,<_kdata
 0042 90E0              ldi R25,>_kdata
 0044 E0910D00          lds R30,_i
 0048 FF27              clr R31
 004A E80F              add R30,R24
 004C F91F              adc R31,R25
 004E 2080              ldd R2,z+0
 0050 20920C00          sts _jdata,R2
 0054                   .dbline 43
 0054 80E0              ldi R24,<_seg7
 0056 90E0              ldi R25,>_seg7
 0058 E22D              mov R30,R2
 005A FF27              clr R31
 005C E80F              add R30,R24
 005E F91F              adc R31,R25
 0060 2080              ldd R2,z+0
 0062 20920B00          sts _ldata,R2
 0066                   .dbline 44
 0066 2BBA              out 0x1b,R2
 0068                   .dbline 46
 0068 80910D00          lds R24,_i
 006C 8F5F              subi R24,255    ; addi 1
 006E 80930D00          sts _i,R24
 0072                   .dbline 47
 0072 20900A00          lds R2,_addr
 0076 220C              lsl R2
 0078 20920A00          sts _addr,R2
 007C                   .dbline 48
 007C 2220              tst R2
 007E 31F4              brne L4
 0080                   .dbline 49
 0080                   .dbline 49
 0080 81E0              ldi R24,1
 0082 80930A00          sts _addr,R24
 0086                   .dbline 50
 0086 2224              clr R2
 0088 20920D00          sts _i,R2
 008C                   .dbline 51
 008C           L4:
 008C                   .dbline -2
 008C           L3:
 008C 2990              ld R2,y+
 008E 2FBE              out 0x3f,R2
 0090 F991              ld R31,y+
 0092 E991              ld R30,y+
 0094 9991              ld R25,y+
 0096 8991              ld R24,y+
 0098 2990              ld R2,y+
 009A                   .dbline 0 ; func end
 009A 1895              reti
 009C                   .dbend
 009C                   .dbfunc e init_devices _init_devices fV
                        .even
 009C           _init_devices::
 009C                   .dbline -1
 009C                   .dbline 58
 009C           ; }
 009C           ; 
 009C           ; #pragma interrupt_handler timer0_ovf_isr:10
 009C           ; void timer0_ovf_isr(void)
 009C           ; {
 009C           ;  TCNT0 = 0xC2; //reload counter value
 009C           ;  PORTB = addr; 
 009C           ;  jdata = kdata[i];
 009C           ;  ldata = seg7[jdata];
 009C           ;  PORTA = ldata;
 009C           ;  
 009C           ;  i++;
 009C           ;  addr = addr<<1;
 009C           ;  if(addr == 0)
 009C           ;   {addr = 1;
 009C           ;    i = 0;
 009C           ;   }
 009C           ;  
 009C           ;  
 009C           ; }
 009C           ; 
 009C           ; //call this routine to initialize all peripherals
 009C           ; void init_devices(void)
 009C           ; {
 009C                   .dbline 60
 009C           ;  //stop errant interrupts until set up
 009C           ;  CLI(); //disable all interrupts
 009C F894              cli
 009E                   .dbline 61
 009E           ;  port_init();
 009E B0DF              xcall _port_init
 00A0                   .dbline 62
 00A0           ;  timer0_init();
 00A0 BADF              xcall _timer0_init
 00A2                   .dbline 64
 00A2           ; 
 00A2           ;  MCUCR = 0x00;
 00A2 2224              clr R2
 00A4 25BE              out 0x35,R2
 00A6                   .dbline 65
 00A6           ;  GICR  = 0x00;
 00A6 2BBE              out 0x3b,R2
 00A8                   .dbline 66
 00A8           ;  TIMSK = 0x01; //timer interrupt sources
 00A8 81E0              ldi R24,1
 00AA 89BF              out 0x39,R24
 00AC                   .dbline 67
 00AC           ;  SEI(); //re-enable interrupts
 00AC 7894              sei
 00AE                   .dbline -2
 00AE           L6:
 00AE                   .dbline 0 ; func end
 00AE 0895              ret
 00B0                   .dbend
 00B0                   .dbfunc e main _main fV
                        .even
 00B0           _main::
 00B0                   .dbline -1
 00B0                   .dbline 73
 00B0           ;  //all peripherals are now initialized
 00B0           ; }
 00B0           ; 
 00B0           ; //
 00B0           ; void main(void)
 00B0           ; {
 00B0                   .dbline 74
 00B0           ;  init_devices();
 00B0 F5DF              xcall _init_devices
 00B2                   .dbline -2
 00B2           L7:
 00B2                   .dbline 0 ; func end
 00B2 0895              ret
 00B4                   .dbend

⌨️ 快捷键说明

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