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

📄 ledbright.lis

📁 红外遥控模拟的汇编程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -