?? pwm_ser.lis
字號:
.module pwm_ser.c
.area data(ram, con, rel)
0000 _counter::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile E:\myavr\PWM_SER\pwm_ser.c
0001 .dbsym e counter _counter c
.area lit(rom, con, rel)
0000 _array::
0000 A0F9 .byte 160,249
0002 C4D0 .byte 196,208
0004 9992 .byte 153,146
0006 .dbsym e array _array A[6:6]kc
.area text(rom, con, rel)
0000 .dbfile E:\myavr\PWM_SER\pwm_ser.c
0000 .dbfunc e intial _intial fV
.even
0000 _intial::
0000 .dbline -1
0000 .dbline 10
0000 ; #include<iom16v.h>
0000 ; #include<macros.h>
0000 ; #define uchar unsigned char
0000 ; #define uint unsigned int
0000 ; #define xtal 6
0000 ; uchar counter=0;
0000 ; uchar key;
0000 ; const uchar array[6]={0xa0,0xf9,0xc4,0xd0,0x99,0x92};
0000 ; void intial(void)
0000 ; {
0000 .dbline 11
0000 ; TCCR0=0X6c;
0000 8CE6 ldi R24,108
0002 83BF out 0x33,R24
0004 .dbline 12
0004 ; TCNT0=0X0;
0004 2224 clr R2
0006 22BE out 0x32,R2
0008 .dbline 13
0008 ; TIMSK=0X1;
0008 81E0 ldi R24,1
000A 89BF out 0x39,R24
000C .dbline 14
000C ; TIFR=0X0;
000C 28BE out 0x38,R2
000E .dbline 15
000E ; DDRB=0x8; //PB3輸出
000E 88E0 ldi R24,8
0010 87BB out 0x17,R24
0012 .dbline 16
0012 ; PORTB=0x8;
0012 88BB out 0x18,R24
0014 .dbline 17
0014 ; DDRA=0xFC; //Pa0,Pa1輸入
0014 8CEF ldi R24,252
0016 8ABB out 0x1a,R24
0018 .dbline 18
0018 ; PORTA=0Xff;
0018 8FEF ldi R24,255
001A 8BBB out 0x1b,R24
001C .dbline 19
001C ; DDRD=0XFF;
001C 81BB out 0x11,R24
001E .dbline 20
001E ; PORTD=0X0;
001E 22BA out 0x12,R2
0020 .dbline 21
0020 ; _SEI();
0020 7894 sei
0022 .dbline -2
0022 .dbline 22
0022 ; }
0022 L1:
0022 .dbline 0 ; func end
0022 0895 ret
0024 .dbend
0024 .dbfunc e delay10ms _delay10ms fV
0024 ; j -> R16
0024 ; i -> R18,R19
.even
0024 _delay10ms::
0024 .dbline -1
0024 .dbline 25
0024 ;
0024 ; void delay10ms(void)
0024 ; {
0024 .dbline 27
0024 ; uint i;
0024 ; uchar j=10;
0024 0AE0 ldi R16,10
0026 09C0 xjmp L4
0028 L3:
0028 .dbline 29
0028 ; while(j--)
0028 ; {
0028 .dbline 30
0028 ; for(i=1;i<(uint)(xtal*143-2);i++)
0028 21E0 ldi R18,1
002A 30E0 ldi R19,0
002C 02C0 xjmp L9
002E L6:
002E .dbline 31
002E L7:
002E .dbline 30
002E 2F5F subi R18,255 ; offset = 1
0030 3F4F sbci R19,255
0032 L9:
0032 .dbline 30
0032 2835 cpi R18,88
0034 E3E0 ldi R30,3
0036 3E07 cpc R19,R30
0038 D0F3 brlo L6
003A .dbline 32
003A L4:
003A .dbline 28
003A 202E mov R2,R16
003C 3324 clr R3
003E 0150 subi R16,1
0040 2220 tst R2
0042 91F7 brne L3
0044 .dbline -2
0044 .dbline 33
0044 ; ;
0044 ; }
0044 ; }
0044 L2:
0044 .dbline 0 ; func end
0044 0895 ret
0046 .dbsym r j 16 c
0046 .dbsym r i 18 i
0046 .dbend
0046 .dbfunc e key_decord _key_decord fc
0046 ; y -> R20
0046 ; t -> R20
.even
0046 _key_decord::
0046 0E940000 xcall push_gset1
004A .dbline -1
004A .dbline 36
004A ;
004A ; uchar key_decord(void)
004A ; {
004A .dbline 39
004A ; uchar y;
004A ; uchar t;
004A ; t=PINA&3;
004A 49B3 in R20,0x19
004C 4370 andi R20,3
004E .dbline 40
004E ; delay10ms();
004E EADF xcall _delay10ms
0050 .dbline 41
0050 ; t=PINA&3;
0050 49B3 in R20,0x19
0052 4370 andi R20,3
0054 .dbline 42
0054 ; switch (t)
0054 5527 clr R21
0056 4030 cpi R20,0
0058 4507 cpc R20,R21
005A 49F0 breq L14
005C X0:
005C 4130 cpi R20,1
005E E0E0 ldi R30,0
0060 5E07 cpc R21,R30
0062 39F0 breq L15
0064 4230 cpi R20,2
0066 E0E0 ldi R30,0
0068 5E07 cpc R21,R30
006A 29F0 breq L16
006C 06C0 xjmp L11
006E X1:
006E .dbline 43
006E L14:
006E .dbline 43
006E ; {case 0: y=2;break;
006E 42E0 ldi R20,2
0070 .dbline 43
0070 05C0 xjmp L12
0072 L15:
0072 .dbline 44
0072 ; case 1: y=3;break;
0072 43E0 ldi R20,3
0074 .dbline 44
0074 03C0 xjmp L12
0076 L16:
0076 .dbline 45
0076 ; case 2: y=1;break;
0076 41E0 ldi R20,1
0078 .dbline 45
0078 01C0 xjmp L12
007A L11:
007A .dbline 46
007A ; default: y=0;}
007A 4427 clr R20
007C .dbline 46
007C L12:
007C .dbline 47
007C ; return(y);
007C 042F mov R16,R20
007E .dbline -2
007E L10:
007E 0E940000 xcall pop_gset1
0082 .dbline 0 ; func end
0082 0895 ret
0084 .dbsym r y 20 c
0084 .dbsym r t 20 c
0084 .dbend
.area vector(rom, abs)
.org 36
0024 0C944200 jmp _T0_ov
.area text(rom, con, rel)
0084 .dbfile E:\myavr\PWM_SER\pwm_ser.c
0084 .dbfunc e T0_ov _T0_ov fV
0084 ; t -> <dead>
.even
0084 _T0_ov::
0084 2A92 st -y,R2
0086 0A93 st -y,R16
0088 1A93 st -y,R17
008A 8A93 st -y,R24
008C EA93 st -y,R30
008E FA93 st -y,R31
0090 2FB6 in R2,0x3f
0092 2A92 st -y,R2
0094 .dbline -1
0094 .dbline 52
0094 ; }
0094 ;
0094 ; #pragma interrupt_handler T0_ov:10
0094 ; void T0_ov(void)
0094 ; {
0094 .dbline 54
0094 ; uchar t;
0094 ; TIFR^=0X1;
0094 81E0 ldi R24,1
0096 28B6 in R2,0x38
0098 2826 eor R2,R24
009A 28BE out 0x38,R2
009C .dbline 55
009C ; switch (key)
009C 00910000 lds R16,_key
00A0 1127 clr R17
00A2 0030 cpi R16,0
00A4 0107 cpc R16,R17
00A6 89F0 breq L21
00A8 X2:
00A8 0130 cpi R16,1
00AA E0E0 ldi R30,0
00AC 1E07 cpc R17,R30
00AE A1F0 breq L22
00B0 0230 cpi R16,2
00B2 E0E0 ldi R30,0
00B4 1E07 cpc R17,R30
00B6 B9F0 breq L24
00B8 0330 cpi R16,3
00BA E0E0 ldi R30,0
00BC 1E07 cpc R17,R30
00BE D1F0 breq L26
00C0 0430 cpi R16,4
00C2 E0E0 ldi R30,0
00C4 1E07 cpc R17,R30
00C6 E9F0 breq L28
00C8 23C0 xjmp L18
00CA X3:
00CA .dbline 56
00CA L21:
00CA .dbline 56
00CA ; {case 0: OCR0=12; PORTD=array[0];break; //-90度
00CA 8CE0 ldi R24,12
00CC 8CBF out 0x3c,R24
00CE .dbline 56
00CE E0E0 ldi R30,<_array
00D0 F0E0 ldi R31,>_array
00D2 E491 lpm R30,Z
00D4 E2BB out 0x12,R30
00D6 .dbline 56
00D6 22C0 xjmp L19
00D8 L22:
00D8 .dbline 57
00D8 ; case 1: OCR0= 25; PORTD=array[1];break; //-45度
00D8 89E1 ldi R24,25
00DA 8CBF out 0x3c,R24
00DC .dbline 57
00DC E0E0 ldi R30,<_array+1
00DE F0E0 ldi R31,>_array+1
00E0 E491 lpm R30,Z
00E2 E2BB out 0x12,R30
00E4 .dbline 57
00E4 1BC0 xjmp L19
00E6 L24:
00E6 .dbline 58
00E6 ; case 2: OCR0=36; PORTD=array[2];break; //0度
00E6 84E2 ldi R24,36
00E8 8CBF out 0x3c,R24
00EA .dbline 58
00EA E0E0 ldi R30,<_array+2
00EC F0E0 ldi R31,>_array+2
00EE E491 lpm R30,Z
00F0 E2BB out 0x12,R30
00F2 .dbline 58
00F2 14C0 xjmp L19
00F4 L26:
00F4 .dbline 59
00F4 ; case 3: OCR0=48; PORTD=array[3];break; //45度
00F4 80E3 ldi R24,48
00F6 8CBF out 0x3c,R24
00F8 .dbline 59
00F8 E0E0 ldi R30,<_array+3
00FA F0E0 ldi R31,>_array+3
00FC E491 lpm R30,Z
00FE E2BB out 0x12,R30
0100 .dbline 59
0100 0DC0 xjmp L19
0102 L28:
0102 .dbline 60
0102 ; case 4: OCR0=60; PORTD=array[4];break; //90度
0102 8CE3 ldi R24,60
0104 8CBF out 0x3c,R24
0106 .dbline 60
0106 E0E0 ldi R30,<_array+4
0108 F0E0 ldi R31,>_array+4
010A E491 lpm R30,Z
010C E2BB out 0x12,R30
010E .dbline 60
010E 06C0 xjmp L19
0110 L18:
0110 .dbline 61
0110 84E2 ldi R24,36
0112 8CBF out 0x3c,R24
0114 .dbline 61
0114 E0E0 ldi R30,<_array
0116 F0E0 ldi R31,>_array
0118 E491 lpm R30,Z
011A E2BB out 0x12,R30
011C .dbline 61
011C L19:
011C .dbline -2
011C .dbline 62
011C ; default:OCR0=36; PORTD=array[0] ; }
011C ; }
011C L17:
011C 2990 ld R2,y+
011E 2FBE out 0x3f,R2
0120 F991 ld R31,y+
0122 E991 ld R30,y+
0124 8991 ld R24,y+
0126 1991 ld R17,y+
0128 0991 ld R16,y+
012A 2990 ld R2,y+
012C .dbline 0 ; func end
012C 1895 reti
012E .dbsym l t 1 c
012E .dbend
012E .dbfunc e main _main fI
.even
012E _main::
012E .dbline -1
012E .dbline 68
012E ;
012E ;
012E ;
012E ;
012E ; main()
012E ; {
012E .dbline 69
012E ; intial();
012E 68DF xcall _intial
0130 L31:
0130 .dbline 71
0130 ; do
0130 ; {/*_CLI();
0130 .dbline 75
0130 ; key=key_decord();
0130 ; _SEI();
0130 ; */
0130 ; key=0;
0130 2224 clr R2
0132 20920000 sts _key,R2
0136 .dbline 76
0136 L32:
0136 .dbline 76
0136 FCCF xjmp L31
0138 X4:
0138 .dbline -2
0138 .dbline 79
0138 ; }while(1);
0138 ;
0138 ;
0138 ; }
0138 L30:
0138 .dbline 0 ; func end
0138 0895 ret
013A .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\myavr\PWM_SER\pwm_ser.c
0000 _key::
0000 .blkb 1
0001 .dbsym e key _key c
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -