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

📄 pwm.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00E0                   .dbline -2
 00E0                   .dbline 45
 00E0           ; 
 00E0           ; void Sub_Process(uchar *p)
 00E0           ; {uchar temp;
 00E0           ;  temp=p[1]*10+p[2];
 00E0           ;  if(temp!=0)
 00E0           ;   {temp=temp-1;
 00E0           ;    p[1]=temp/10;
 00E0           ;    p[2]=temp-p[1]*10;
 00E0           ;   }
 00E0           ; }
 00E0           L20:
 00E0 00D0              rcall pop_gset2
 00E2                   .dbline 0 ; func end
 00E2 0895              ret
 00E4                   .dbsym r temp 22 c
 00E4                   .dbsym r p 20 pc
 00E4                   .dbend
 00E4                   .dbfunc e Key_Process _Key_Process fV
                        .even
 00E4           _Key_Process::
 00E4                   .dbline -1
 00E4                   .dbline 48
 00E4 06C0              rjmp L25
 00E6           L24:
 00E6                   .dbline 48
 00E6                   .dbline 48
 00E6 00E0              ldi R16,<_Data1
 00E8 10E0              ldi R17,>_Data1
 00EA 9BDF              rcall _Display
 00EC                   .dbline 48
 00EC 81E0              ldi R24,1
 00EE 80930100          sts _Key1_Flag,R24
 00F2                   .dbline 48
 00F2           L25:
 00F2                   .dbline 48
 00F2           ;  
 00F2           ; void Key_Process()
 00F2           ; {while((PINB&0x01)==0) {Display(Data1);Key1_Flag=1;}  
 00F2 B09B              sbis 0x16,0
 00F4 F8CF              rjmp L24
 00F6 06C0              rjmp L28
 00F8           L27:
 00F8                   .dbline 49
 00F8                   .dbline 49
 00F8 00E0              ldi R16,<_Data1
 00FA 10E0              ldi R17,>_Data1
 00FC 92DF              rcall _Display
 00FE                   .dbline 49
 00FE 81E0              ldi R24,1
 0100 80930000          sts _Key2_Flag,R24
 0104                   .dbline 49
 0104           L28:
 0104                   .dbline 49
 0104           ;  while((PINB&0x02)==0) {Display(Data1);Key2_Flag=1;}
 0104 B19B              sbis 0x16,1
 0106 F8CF              rjmp L27
 0108                   .dbline 50
 0108           ;  if(Key1_Flag==1)
 0108 80910100          lds R24,_Key1_Flag
 010C 8130              cpi R24,1
 010E 31F4              brne L30
 0110                   .dbline 51
 0110           ;      {Add_Process(Data1);           
 0110                   .dbline 51
 0110 00E0              ldi R16,<_Data1
 0112 10E0              ldi R17,>_Data1
 0114 A7DF              rcall _Add_Process
 0116                   .dbline 52
 0116           ;         Key1_Flag=0;}
 0116 2224              clr R2
 0118 20920100          sts _Key1_Flag,R2
 011C                   .dbline 52
 011C           L30:
 011C                   .dbline 53
 011C 80910000          lds R24,_Key2_Flag
 0120 8130              cpi R24,1
 0122 31F4              brne L32
 0124                   .dbline 54
 0124                   .dbline 54
 0124 00E0              ldi R16,<_Data1
 0126 10E0              ldi R17,>_Data1
 0128 BCDF              rcall _Sub_Process
 012A                   .dbline 55
 012A 2224              clr R2
 012C 20920000          sts _Key2_Flag,R2
 0130                   .dbline 55
 0130           L32:
 0130                   .dbline -2
 0130                   .dbline 56
 0130           ;  if(Key2_Flag==1)
 0130           ;      {Sub_Process(Data1);
 0130           ;         Key2_Flag=0;} 
 0130           ; }
 0130           L23:
 0130                   .dbline 0 ; func end
 0130 0895              ret
 0132                   .dbend
 0132                   .dbfunc e Set_Process _Set_Process fV
 0132           ;              i -> R20,R21
 0132           ;              p -> R20,R21
                        .even
 0132           _Set_Process::
 0132 00D0              rcall push_gset1
 0134 402F              mov R20,R16
 0136 512F              mov R21,R17
 0138                   .dbline -1
 0138                   .dbline 59
 0138           ;           
 0138           ; void Set_Process(uchar *p)
 0138           ; {uint i;
 0138                   .dbline 60
 0138           ;  i=p[1]*10+p[2];
 0138 E42F              mov R30,R20
 013A F52F              mov R31,R21
 013C 2181              ldd R18,z+1
 013E 3327              clr R19
 0140 0AE0              ldi R16,10
 0142 10E0              ldi R17,0
 0144 00D0              rcall mpy16s
 0146 202E              mov R2,R16
 0148 312E              mov R3,R17
 014A E42F              mov R30,R20
 014C F52F              mov R31,R21
 014E 4280              ldd R4,z+2
 0150 5524              clr R5
 0152 240C              add R2,R4
 0154 351C              adc R3,R5
 0156                   .dbline 61
 0156           ;  i=1023*i/10;
 0156 0FEF              ldi R16,1023
 0158 13E0              ldi R17,3
 015A 222D              mov R18,R2
 015C 332D              mov R19,R3
 015E 00D0              rcall mpy16s
 0160 2AE0              ldi R18,10
 0162 30E0              ldi R19,0
 0164 00D0              rcall div16u
 0166 402F              mov R20,R16
 0168 512F              mov R21,R17
 016A                   .dbline 62
 016A           ;  OCR1AH=i>>8;
 016A 242E              mov R2,R20
 016C 352E              mov R3,R21
 016E 232C              mov R2,R3
 0170 3324              clr R3
 0172 2BBC              out 0x2b,R2
 0174                   .dbline 63
 0174           ;  OCR1AL=i&0x00ff;
 0174 842F              mov R24,R20
 0176 952F              mov R25,R21
 0178 9070              andi R25,0
 017A 8ABD              out 0x2a,R24
 017C                   .dbline -2
 017C                   .dbline 64
 017C           ; }
 017C           L34:
 017C 00D0              rcall pop_gset1
 017E                   .dbline 0 ; func end
 017E 0895              ret
 0180                   .dbsym r i 20 i
 0180                   .dbsym r p 20 pc
 0180                   .dbend
 0180                   .dbfunc e Init_IO _Init_IO fV
                        .even
 0180           _Init_IO::
 0180                   .dbline -1
 0180                   .dbline 67
 0180           ; 
 0180           ; void Init_IO(void)             //初始化I/O口
 0180           ; {DDRA=0xff;                    //设置A口为推挽1输出
 0180                   .dbline 67
 0180 8FEF              ldi R24,255
 0182 8ABB              out 0x1a,R24
 0184                   .dbline 68
 0184           ;  PORTA=0xff;
 0184 8BBB              out 0x1b,R24
 0186                   .dbline 69
 0186           ;  DDRC=0xff;                    //设置C口为推挽1输出             
 0186 84BB              out 0x14,R24
 0188                   .dbline 70
 0188           ;  PORTC=0xff;
 0188 85BB              out 0x15,R24
 018A                   .dbline 71
 018A           ;  DDRB=0x00;                    //设置B口为三态输入
 018A 2224              clr R2
 018C 27BA              out 0x17,R2
 018E                   .dbline 72
 018E           ;  PORTB=0x00;
 018E 28BA              out 0x18,R2
 0190                   .dbline 73
 0190           ;  DDRD=0xff;                    //设置D口为推挽1输出
 0190 81BB              out 0x11,R24
 0192                   .dbline 74
 0192           ;  PORTD=0xff;    
 0192 82BB              out 0x12,R24
 0194                   .dbline -2
 0194                   .dbline 75
 0194           ; }
 0194           L35:
 0194                   .dbline 0 ; func end
 0194 0895              ret
 0196                   .dbend
 0196                   .dbfunc e main _main fV
 0196           ;              i -> R20
                        .even
 0196           _main::
 0196                   .dbline -1
 0196                   .dbline 78
 0196           ; 
 0196           ; void main(void)
 0196           ; {uchar i;
 0196                   .dbline 79
 0196           ;  Init_IO();                    //初始化I/O口
 0196 F4DF              rcall _Init_IO
 0198                   .dbline 80
 0198           ;  PORTA=0xff;                   //点亮以测试所有的数码管
 0198 8FEF              ldi R24,255
 019A 8BBB              out 0x1b,R24
 019C                   .dbline 81
 019C           ;  PORTC=0x00;   
 019C 2224              clr R2
 019E 25BA              out 0x15,R2
 01A0                   .dbline 83
 01A0           ;  //DelayMs(300);                 //延时
 01A0           ;  PORTC=0xff;                   //熄灭所有的数码管
 01A0 85BB              out 0x15,R24
 01A2                   .dbline 84
 01A2           ;  TCCR1A=0xc3;                  //10位PWM,向上计数清除OC1A,向下计数置位OC1A
 01A2 83EC              ldi R24,195
 01A4 8FBD              out 0x2f,R24
 01A6                   .dbline 85
 01A6           ;  TCCR1B=0x02;                  //时钟8分频,最小频率1M/2046=0.5KHz       
 01A6 82E0              ldi R24,2
 01A8 8EBD              out 0x2e,R24
 01AA 14C0              rjmp L38
 01AC           L37:
 01AC                   .dbline 87
 01AC           ;  while(1)
 01AC           ;  {Key_Process();
 01AC                   .dbline 87
 01AC 9BDF              rcall _Key_Process
 01AE                   .dbline 88
 01AE           ;   Set_Process(Data1);         //设置PWM占空比
 01AE 00E0              ldi R16,<_Data1
 01B0 10E0              ldi R17,>_Data1
 01B2 BFDF              rcall _Set_Process
 01B4                   .dbline 89
 01B4           ;   for(i=50;i!=0;i--)
 01B4 42E3              ldi R20,50
 01B6 04C0              rjmp L43
 01B8           L40:
 01B8                   .dbline 90
 01B8 00E0              ldi R16,<_Data1
 01BA 10E0              ldi R17,>_Data1
 01BC 32DF              rcall _Display
 01BE           L41:
 01BE                   .dbline 89
 01BE 4A95              dec R20
 01C0           L43:
 01C0                   .dbline 89
 01C0 4423              tst R20
 01C2 D1F7              brne L40
 01C4                   .dbline 91
 01C4           ;     Display(Data1);
 01C4           ;   for(i=50;i!=0;i--)
 01C4 42E3              ldi R20,50
 01C6 04C0              rjmp L47
 01C8           L44:
 01C8                   .dbline 92
 01C8 00E0              ldi R16,<_Data2
 01CA 10E0              ldi R17,>_Data2
 01CC 2ADF              rcall _Display
 01CE           L45:
 01CE                   .dbline 91
 01CE 4A95              dec R20
 01D0           L47:
 01D0                   .dbline 91
 01D0 4423              tst R20
 01D2 D1F7              brne L44
 01D4                   .dbline 93
 01D4           L38:
 01D4                   .dbline 86
 01D4 EBCF              rjmp L37
 01D6           X2:
 01D6                   .dbline -2
 01D6                   .dbline 94
 01D6           ;     Display(Data2);
 01D6           ;  }
 01D6           ; }
 01D6           L36:
 01D6                   .dbline 0 ; func end
 01D6 0895              ret
 01D8                   .dbsym r i 20 c
 01D8                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile I:\AVRpractice\BOOK\定时器1\PWM\PWM.C
 0000           _Key2_Flag::
 0000                   .blkb 1
 0001                   .dbsym e Key2_Flag _Key2_Flag c
 0001           _Key1_Flag::
 0001                   .blkb 1
 0002                   .dbsym e Key1_Flag _Key1_Flag c

⌨️ 快捷键说明

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