📄 ledbright.lis
字号:
.module LEDBRIGHT.C
.area text(rom, con, rel)
0000 .dbfile D:\PROTEU~1.7\ICCAVR~1\LED渐明渐暗\LEDBRIGHT.C
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 17
0000 ; //ICC-AVR application builder : 2006-3-5 20:09:53
0000 ; // Target : M8
0000 ; // Crystal: 4.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ; #define bitset(var, bitno) ((var) |= (1 << (bitno)))
0000 ; #define bitclr(var, bitno) ((var) &= ~(1 << (bitno)))
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ; #define suchar static unsigned char
0000 ; #define suint static unsigned int
0000 ; suint pot_vol;
0000 ; suchar uchsw;num;
0000 ; suchar pwm;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 18
0000 ; PORTB = 0x00;
0000 2224 clr R2
0002 28BA out 0x18,R2
0004 .dbline 19
0004 ; DDRB = 0x02;
0004 82E0 ldi R24,2
0006 87BB out 0x17,R24
0008 .dbline 20
0008 ; PORTC = 0x00; //m103 output only
0008 25BA out 0x15,R2
000A .dbline 21
000A ; DDRC = 0x00;
000A 24BA out 0x14,R2
000C .dbline 22
000C ; PORTD = 0x00;
000C 22BA out 0x12,R2
000E .dbline 23
000E ; DDRD = 0x00;
000E 21BA out 0x11,R2
0010 .dbline -2
0010 L1:
0010 .dbline 0 ; func end
0010 0895 ret
0012 .dbend
0012 .dbfunc e timer1_init _timer1_init fV
.even
0012 _timer1_init::
0012 .dbline -1
0012 .dbline 29
0012 ; }
0012 ;
0012 ; //TIMER1 initialisation - prescale:1
0012 ; // WGM: 8) PWM phz freq correct, TOP=ICRn
0012 ; void timer1_init(void)
0012 ; {TCCR1B = 0x00; //stop
0012 .dbline 29
0012 2224 clr R2
0014 2EBC out 0x2e,R2
0016 .dbline 30
0016 ; TCNT1H = 0x00; //setup
0016 2DBC out 0x2d,R2
0018 .dbline 31
0018 ; TCNT1L = 0x00;
0018 2CBC out 0x2c,R2
001A .dbline 32
001A ; OCR1AH = 0x00;
001A 2BBC out 0x2b,R2
001C .dbline 33
001C ; OCR1AL = 0x00;
001C 2ABC out 0x2a,R2
001E .dbline 34
001E ; OCR1BH = 0x00;
001E 29BC out 0x29,R2
0020 .dbline 35
0020 ; OCR1BL = 0x0A;
0020 8AE0 ldi R24,10
0022 88BD out 0x28,R24
0024 .dbline 36
0024 ; ICR1H = 0x00;
0024 27BC out 0x27,R2
0026 .dbline 37
0026 ; ICR1L = 0xCE; //18KHZ
0026 8EEC ldi R24,206
0028 86BD out 0x26,R24
002A .dbline 38
002A ; TCCR1A = 0x82;
002A 82E8 ldi R24,130
002C 8FBD out 0x2f,R24
002E .dbline 39
002E ; TCCR1B = 0x19; //start Timer
002E 89E1 ldi R24,25
0030 8EBD out 0x2e,R24
0032 .dbline -2
0032 L2:
0032 .dbline 0 ; func end
0032 0895 ret
0034 .dbend
0034 .dbfunc e init_devices _init_devices fV
.even
0034 _init_devices::
0034 .dbline -1
0034 .dbline 44
0034 ; }
0034 ;
0034 ; //call this routine to initialize all peripherals
0034 ; void init_devices(void)
0034 ; {
0034 .dbline 46
0034 ; //stop errant interrupts until set up
0034 ; CLI(); //disable all interrupts
0034 F894 cli
0036 .dbline 47
0036 ; port_init();
0036 E4DF rcall _port_init
0038 .dbline 48
0038 ; timer1_init();
0038 ECDF rcall _timer1_init
003A .dbline 50
003A ;
003A ; MCUCR = 0x00;
003A 2224 clr R2
003C 25BE out 0x35,R2
003E .dbline 51
003E ; GICR = 0x00;
003E 2BBE out 0x3b,R2
0040 .dbline 52
0040 ; TIMSK = 0x00; //timer interrupt sources
0040 29BE out 0x39,R2
0042 .dbline 53
0042 ; SEI(); //re-enable interrupts
0042 7894 sei
0044 .dbline -2
0044 L3:
0044 .dbline 0 ; func end
0044 0895 ret
0046 .dbend
0046 .dbfunc e delay _delay fV
0046 ; i -> R16
0046 ; j -> R18
.even
0046 _delay::
0046 .dbline -1
0046 .dbline 57
0046 ; //all peripherals are now initialized
0046 ; }
0046 ; void delay(void)
0046 ; {
0046 .dbline 60
0046 ; uchar i;
0046 ; uchar j;
0046 ; for(i=0;i<150;i++)
0046 0027 clr R16
0048 07C0 rjmp L8
004A L5:
004A .dbline 61
004A ; {
004A .dbline 62
004A ; for(j=0;j<150;j++)
004A 2227 clr R18
004C 02C0 rjmp L12
004E L9:
004E .dbline 63
004E 0000 nop
0050 L10:
0050 .dbline 62
0050 2395 inc R18
0052 L12:
0052 .dbline 62
0052 2639 cpi R18,150
0054 E0F3 brlo L9
0056 .dbline 63
0056 L6:
0056 .dbline 60
0056 0395 inc R16
0058 L8:
0058 .dbline 60
0058 0639 cpi R16,150
005A B8F3 brlo L5
005C .dbline -2
005C L4:
005C .dbline 0 ; func end
005C 0895 ret
005E .dbsym r i 16 c
005E .dbsym r j 18 c
005E .dbend
005E .dbfunc e pwmopen _pwmopen fV
005E ; i -> R16
.even
005E _pwmopen::
005E .dbline -1
005E .dbline 67
005E ; asm("nop");}
005E ;
005E ; }
005E ; void pwmopen(uchar i)
005E ; {
005E .dbline 75
005E ;
005E ; // TCCR1A = 0x82;
005E ; // TCCR1B = 0x19;
005E ; //pwm=OCR1AL;
005E ; //if(pwm==i) return;
005E ; // else if(pwm>i) pwm--;
005E ; // else pwm++;
005E ; OCR1AH=0;
005E 2224 clr R2
0060 2BBC out 0x2b,R2
0062 .dbline 76
0062 ; OCR1AL=i;
0062 0ABD out 0x2a,R16
0064 .dbline -2
0064 L13:
0064 .dbline 0 ; func end
0064 0895 ret
0066 .dbsym r i 16 c
0066 .dbend
0066 .dbfunc e clpwm _clpwm fV
.even
0066 _clpwm::
0066 .dbline -1
0066 .dbline 79
0066 ; }
0066 ; void clpwm()
0066 ; {
0066 .dbline 80
0066 ; TCCR1B=0x00;
0066 2224 clr R2
0068 2EBC out 0x2e,R2
006A .dbline 81
006A ; TCCR1A=0x00;
006A 2FBC out 0x2f,R2
006C .dbline 82
006C ; bitclr(PORTB,1);
006C C198 cbi 0x18,1
006E .dbline 83
006E ; TCNT1H=0;TCNT1L=0;
006E 2DBC out 0x2d,R2
0070 .dbline 83
0070 2CBC out 0x2c,R2
0072 .dbline -2
0072 L14:
0072 .dbline 0 ; func end
0072 0895 ret
0074 .dbend
0074 .dbfunc e auto_mode _auto_mode fV
0074 ; i -> R20
.even
0074 _auto_mode::
0074 00D0 rcall push_gset1
0076 .dbline -1
0076 .dbline 86
0076 ; }
0076 ; void auto_mode(void)
0076 ; {
0076 .dbline 93
0076 ; unsigned char i;
0076 ; // bitset(PORTD,0);
0076 ; //bitclr(PORTD,1);
0076 ; // while(uchsw)
0076 ; //{
0076 ;
0076 ; for (i=0;255>i; i++)
0076 4427 clr R20
0078 0BC0 rjmp L19
007A L16:
007A .dbline 94
007A ; {
007A .dbline 95
007A ; if ((PINC&0x02)|(PINC&0x04)) break;
007A 83B3 in R24,0x13
007C 8470 andi R24,4
007E 93B3 in R25,0x13
0080 9270 andi R25,2
0082 982B or R25,R24
0084 09F0 breq L20
0086 .dbline 95
0086 07C0 rjmp L18
0088 L20:
0088 .dbline 96
0088 042F mov R16,R20
008A E9DF rcall _pwmopen
008C .dbline 97
008C DCDF rcall _delay
008E .dbline 98
008E L17:
008E .dbline 93
008E 4395 inc R20
0090 L19:
0090 .dbline 93
0090 8FEF ldi R24,255
0092 4817 cp R20,R24
0094 90F3 brlo L16
0096 L18:
0096 .dbline 99
0096 ; pwmopen(i);
0096 ; delay();
0096 ; }
0096 ; for (i=255;0<i; i--)
0096 4FEF ldi R20,255
0098 0BC0 rjmp L25
009A L22:
009A .dbline 100
009A ; {
009A .dbline 101
009A ; if ((PINC&0x02)|(PINC&0x04)) break;
009A 83B3 in R24,0x13
009C 8470 andi R24,4
009E 93B3 in R25,0x13
00A0 9270 andi R25,2
00A2 982B or R25,R24
00A4 09F0 breq L26
00A6 .dbline 101
00A6 07C0 rjmp L24
00A8 L26:
00A8 .dbline 102
00A8 042F mov R16,R20
00AA D9DF rcall _pwmopen
00AC .dbline 103
00AC CCDF rcall _delay
00AE .dbline 104
00AE L23:
00AE .dbline 99
00AE 4A95 dec R20
00B0 L25:
00B0 .dbline 99
00B0 2224 clr R2
00B2 2416 cp R2,R20
00B4 90F3 brlo L22
00B6 L24:
00B6 .dbline -2
00B6 L15:
00B6 00D0 rcall pop_gset1
00B8 .dbline 0 ; func end
00B8 0895 ret
00BA .dbsym r i 20 c
00BA .dbend
00BA .dbfunc s pot_charge _pot_charge fc
.even
00BA _pot_charge:
00BA .dbline -1
00BA .dbline 107
00BA ; pwmopen(i);
00BA ; delay();
00BA ; }
00BA ; }
00BA ; static unsigned char pot_charge(void) //电位器AD转换。
00BA ; {
00BA .dbline 109
00BA ; //uchar i;
00BA ; ADMUX=0;
00BA 2224 clr R2
00BC 27B8 out 0x7,R2
00BE .dbline 110
00BE ; ADCSR=6; //1/64 prescaler
00BE 86E0 ldi R24,6
00C0 86B9 out 0x6,R24
00C2 .dbline 111
00C2 ; ADCSR|=(1<<ADEN);ADCSR|=(1<<ADSC);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -