📄 adc-led.lis
字号:
.module adc-led.c
.area data(ram, con, rel)
0000 _lednum::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
0001 .dbsym e lednum _lednum c
0001 _lednum1::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
0002 .dbsym e lednum1 _lednum1 c
0002 _lednum2::
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
0003 .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
0003 .dbsym e lednum2 _lednum2 c
0003 _lednum3::
0003 .blkb 1
.area idata
0003 00 .byte 0
.area data(ram, con, rel)
0004 .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
0004 .dbsym e lednum3 _lednum3 c
0004 _lednum4::
0004 .blkb 1
.area idata
0004 00 .byte 0
.area data(ram, con, rel)
0005 .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
0005 .dbsym e lednum4 _lednum4 c
0005 _num::
0005 .blkb 2
.area idata
0005 3F06 .byte 63,6
.area data(ram, con, rel)
0007 .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
0007 .blkb 2
.area idata
0007 5B4F .byte 91,'O
.area data(ram, con, rel)
0009 .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
0009 .blkb 2
.area idata
0009 666D .byte 'f,'m
.area data(ram, con, rel)
000B .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
000B .blkb 2
.area idata
000B 7D07 .byte 125,7
.area data(ram, con, rel)
000D .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
000D .blkb 2
.area idata
000D 7F6F .byte 127,'o
.area data(ram, con, rel)
000F .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
000F .dbsym e num _num A[10:10]c
.area text(rom, con, rel)
0000 .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 22
0000 ; //Designed by Alf
0000 ; //用于实现AD转换,转换结果由数码管显示,需要闭合SW5、SW6;以及SW8的1脚(AD0),而后旋转AD1电位器即可看到;
0000 ; //AD将电位器分得的0~5V电压转换成了0~1023;
0000 ; //ICC-AVR application builder : 2005-3-8 下午 04:53:49
0000 ; // Target : M8
0000 ; // Crystal: 11.059Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; //lednum全局变量
0000 ; char lednum = 0;
0000 ; char lednum1 = 0;
0000 ; char lednum2 = 0;
0000 ; char lednum3 = 0;
0000 ; char lednum4 = 0;
0000 ; //码表
0000 ; char num[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0000 ;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 23
0000 ; PORTB = 0xFF;
0000 8FEF ldi R24,255
0002 88BB out 0x18,R24
0004 .dbline 24
0004 ; DDRB = 0xFF;
0004 87BB out 0x17,R24
0006 .dbline 25
0006 ; PORTC = 0x00; //m103 output only
0006 2224 clr R2
0008 25BA out 0x15,R2
000A .dbline 26
000A ; DDRC = 0x7E;
000A 8EE7 ldi R24,126
000C 84BB out 0x14,R24
000E .dbline 27
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 28
0010 ; DDRD = 0xFF;
0010 8FEF ldi R24,255
0012 81BB out 0x11,R24
0014 .dbline -2
0014 .dbline 29
0014 ; }
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 36
0016 ;
0016 ; //TIMER0 initialisation - prescale:1024
0016 ; // WGM: Normal
0016 ; // desired value: 20mSec
0016 ; // actual value: 19.908mSec (0.5%)
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 37
0016 ; TCCR0 = 0x00; //stop
0016 2224 clr R2
0018 23BE out 0x33,R2
001A .dbline 38
001A ; TCNT0 = 0x29; //set count
001A 89E2 ldi R24,41
001C 82BF out 0x32,R24
001E .dbline 39
001E ; TCCR0 = 0x04; //start timer
001E 84E0 ldi R24,4
0020 83BF out 0x33,R24
0022 .dbline -2
0022 .dbline 40
0022 ; }
0022 L2:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
.area vector(rom, abs)
.org 18
0012 12C0 rjmp _timer0_ovf_isr
.area text(rom, con, rel)
0024 .dbfile F:\单片机教学\调试程序\ADC\adc-led.c
0024 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0024 _timer0_ovf_isr::
0024 2A92 st -y,R2
0026 8A93 st -y,R24
0028 9A93 st -y,R25
002A 2FB6 in R2,0x3f
002C 2A92 st -y,R2
002E .dbline -1
002E .dbline 44
002E ;
002E ; #pragma interrupt_handler timer0_ovf_isr:10
002E ; void timer0_ovf_isr(void)
002E ; {
002E .dbline 45
002E ; TCNT0 = 0x29; //reload counter value
002E 89E2 ldi R24,41
0030 82BF out 0x32,R24
0032 .dbline 46
0032 ; TCCR0 = 0x04; //start timer
0032 84E0 ldi R24,4
0034 83BF out 0x33,R24
0036 .dbline 48
0036 ;
0036 ; PORTB |= 0x30;
0036 88B3 in R24,0x18
0038 8063 ori R24,48
003A 88BB out 0x18,R24
003C .dbline 49
003C ; PORTC |= 0x30;
003C 85B3 in R24,0x15
003E 8063 ori R24,48
0040 85BB out 0x15,R24
0042 .dbline 50
0042 ; if(lednum == 0) //更新PB4数码管;
0042 20900000 lds R2,_lednum
0046 2220 tst R2
0048 29F4 brne L4
004A .dbline 51
004A ; { PORTB &= ~0x10;
004A .dbline 51
004A C498 cbi 0x18,4
004C .dbline 52
004C ; PORTD = lednum4;
004C 20900400 lds R2,_lednum4
0050 22BA out 0x12,R2
0052 .dbline 53
0052 ; }
0052 16C0 rjmp L5
0054 L4:
0054 .dbline 54
0054 ; else if(lednum ==1) //更新PB5数码管;
0054 80910000 lds R24,_lednum
0058 8130 cpi R24,1
005A 29F4 brne L6
005C .dbline 55
005C ; { PORTB &= ~0x20;
005C .dbline 55
005C C598 cbi 0x18,5
005E .dbline 56
005E ; PORTD = lednum3;
005E 20900300 lds R2,_lednum3
0062 22BA out 0x12,R2
0064 .dbline 57
0064 ; }
0064 0DC0 rjmp L7
0066 L6:
0066 .dbline 58
0066 ; else if(lednum ==2) //更新PC4数码管;
0066 80910000 lds R24,_lednum
006A 8230 cpi R24,2
006C 29F4 brne L8
006E .dbline 59
006E ; { PORTC &= ~0x10;
006E .dbline 59
006E AC98 cbi 0x15,4
0070 .dbline 60
0070 ; PORTD = lednum2;
0070 20900200 lds R2,_lednum2
0074 22BA out 0x12,R2
0076 .dbline 61
0076 ; }
0076 04C0 rjmp L9
0078 L8:
0078 .dbline 63
0078 ; else //更新PC5数码管;
0078 ; { PORTC &= ~0x20;
0078 .dbline 63
0078 AD98 cbi 0x15,5
007A .dbline 64
007A ; PORTD = lednum1;
007A 20900100 lds R2,_lednum1
007E 22BA out 0x12,R2
0080 .dbline 65
0080 ; }
0080 L9:
0080 L7:
0080 L5:
0080 .dbline 67
0080 ;
0080 ; lednum++;
0080 80910000 lds R24,_lednum
0084 8F5F subi R24,255 ; addi 1
0086 80930000 sts _lednum,R24
008A 05C0 rjmp L11
008C L10:
008C .dbline 68
008C 80910000 lds R24,_lednum
0090 8450 subi R24,4
0092 80930000 sts _lednum,R24
0096 L11:
0096 .dbline 68
0096 ; while(lednum >= 4) lednum = lednum - 4;
0096 80910000 lds R24,_lednum
009A 8430 cpi R24,4
009C B8F7 brsh L10
009E .dbline -2
009E .dbline 70
009E ;
009E ; }
009E L3:
009E 2990 ld R2,y+
00A0 2FBE out 0x3f,R2
00A2 9991 ld R25,y+
00A4 8991 ld R24,y+
00A6 2990 ld R2,y+
00A8 .dbline 0 ; func end
00A8 1895 reti
00AA .dbend
00AA .dbfunc e init_devices _init_devices fV
.even
00AA _init_devices::
00AA .dbline -1
00AA .dbline 74
00AA ;
00AA ; //call this routine to initialise all peripherals
00AA ; void init_devices(void)
00AA ; {
00AA .dbline 76
00AA ; //stop errant interrupts until set up
00AA ; CLI(); //disable all interrupts
00AA F894 cli
00AC .dbline 77
00AC ; port_init();
00AC A9DF rcall _port_init
00AE .dbline 78
00AE ; timer0_init();
00AE B3DF rcall _timer0_init
00B0 .dbline 80
00B0 ;
00B0 ; MCUCR = 0x00;
00B0 2224 clr R2
00B2 25BE out 0x35,R2
00B4 .dbline 81
00B4 ; GICR = 0x00;
00B4 2BBE out 0x3b,R2
00B6 .dbline 82
00B6 ; TIMSK = 0x01; //timer interrupt sources
00B6 81E0 ldi R24,1
00B8 89BF out 0x39,R24
00BA .dbline 83
00BA ; SEI(); //re-enable interrupts
00BA 7894 sei
00BC .dbline -2
00BC .dbline 85
00BC ; //all peripherals are now initialised
00BC ; }
00BC L13:
00BC .dbline 0 ; func end
00BC 0895 ret
00BE .dbend
00BE .dbfunc e delay _delay fV
00BE ; j -> R16,R17
00BE ; i -> R18,R19
00BE ; z -> R20,R21
.even
00BE _delay::
00BE 00D0 rcall push_gset1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -