?? pwm_ser.lst
字號:
__start:
__text_start:
002E E5CF LDI R28,0x5F
002F E0D4 LDI R29,4
0030 BFCD OUT 0x3D,R28
0031 BFDE OUT 0x3E,R29
0032 51C0 SUBI R28,0x10
0033 40D0 SBCI R29,0
0034 EA0A LDI R16,0xAA
0035 8308 STD Y+0,R16
0036 2400 CLR R0
0037 E6E1 LDI R30,0x61
0038 E0F0 LDI R31,0
0039 E010 LDI R17,0
003A 36E2 CPI R30,0x62
003B 07F1 CPC R31,R17
003C F011 BEQ 0x003F
003D 9201 ST R0,Z+
003E CFFB RJMP 0x003A
003F 8300 STD Z+0,R16
0040 E5EA LDI R30,0x5A
0041 E0F0 LDI R31,0
0042 E6A0 LDI R26,0x60
0043 E0B0 LDI R27,0
0044 E010 LDI R17,0
0045 35EB CPI R30,0x5B
0046 07F1 CPC R31,R17
0047 F021 BEQ 0x004C
0048 95C8 LPM
0049 9631 ADIW R30,1
004A 920D ST R0,X+
004B CFF9 RJMP 0x0045
004C 940E00E6 CALL _main
_exit:
004E CFFF RJMP _exit
FILE: E:\myavr\PWM_SER\pwm_ser.c
(0001) #include<iom16v.h>
(0002) #include<macros.h>
(0003) #define uchar unsigned char
(0004) #define uint unsigned int
(0005) #define xtal 6
(0006) uchar counter=0;
(0007) uchar key;
(0008) const uchar array[6]={0xa0,0xf9,0xc4,0xd0,0x99,0x92};
(0009) void intial(void)
(0010) {
(0011) TCCR0=0X6c;
_intial:
004F E68C LDI R24,0x6C
0050 BF83 OUT 0x33,R24
(0012) TCNT0=0X0;
0051 2422 CLR R2
0052 BE22 OUT 0x32,R2
(0013) TIMSK=0X1;
0053 E081 LDI R24,1
0054 BF89 OUT 0x39,R24
(0014) TIFR=0X0;
0055 BE28 OUT 0x38,R2
(0015) DDRB=0x8; //PB3輸出
0056 E088 LDI R24,0x8
0057 BB87 OUT 0x17,R24
(0016) PORTB=0x8;
0058 BB88 OUT 0x18,R24
(0017) DDRA=0xFC; //Pa0,Pa1輸入
0059 EF8C LDI R24,0xFC
005A BB8A OUT 0x1A,R24
(0018) PORTA=0Xff;
005B EF8F LDI R24,0xFF
005C BB8B OUT 0x1B,R24
(0019) DDRD=0XFF;
005D BB81 OUT 0x11,R24
(0020) PORTD=0X0;
005E BA22 OUT 0x12,R2
(0021) _SEI();
005F 9478 BSET 7
(0022) }
0060 9508 RET
(0023)
(0024) void delay10ms(void)
(0025) {
(0026) uint i;
(0027) uchar j=10;
_delay10ms:
j --> R16
i --> R18
0061 E00A LDI R16,0xA
0062 C009 RJMP 0x006C
(0028) while(j--)
(0029) {
(0030) for(i=1;i<(uint)(xtal*143-2);i++)
0063 E021 LDI R18,1
0064 E030 LDI R19,0
0065 C002 RJMP 0x0068
0066 5F2F SUBI R18,0xFF
0067 4F3F SBCI R19,0xFF
0068 3528 CPI R18,0x58
0069 E0E3 LDI R30,3
006A 073E CPC R19,R30
006B F3D0 BCS 0x0066
006C 2E20 MOV R2,R16
006D 2433 CLR R3
006E 5001 SUBI R16,1
006F 2022 TST R2
0070 F791 BNE 0x0063
(0031) ;
(0032) }
(0033) }
0071 9508 RET
_key_decord:
y --> R20
t --> R20
0072 940E00EC CALL push_gset1
(0034)
(0035) uchar key_decord(void)
(0036) {
(0037) uchar y;
(0038) uchar t;
(0039) t=PINA&3;
0074 B349 IN R20,0x19
0075 7043 ANDI R20,3
(0040) delay10ms();
0076 DFEA RCALL _delay10ms
(0041) t=PINA&3;
0077 B349 IN R20,0x19
0078 7043 ANDI R20,3
(0042) switch (t)
0079 2755 CLR R21
007A 3040 CPI R20,0
007B 0745 CPC R20,R21
007C F049 BEQ 0x0086
007D 3041 CPI R20,1
007E E0E0 LDI R30,0
007F 075E CPC R21,R30
0080 F039 BEQ 0x0088
0081 3042 CPI R20,2
0082 E0E0 LDI R30,0
0083 075E CPC R21,R30
0084 F029 BEQ 0x008A
0085 C006 RJMP 0x008C
(0043) {case 0: y=2;break;
0086 E042 LDI R20,2
0087 C005 RJMP 0x008D
(0044) case 1: y=3;break;
0088 E043 LDI R20,3
0089 C003 RJMP 0x008D
(0045) case 2: y=1;break;
008A E041 LDI R20,1
008B C001 RJMP 0x008D
(0046) default: y=0;}
008C 2744 CLR R20
(0047) return(y);
008D 2F04 MOV R16,R20
008E 940E00EF CALL pop_gset1
0090 9508 RET
_T0_ov:
t --> Y+1
0091 922A ST R2,-Y
0092 930A ST R16,-Y
0093 931A ST R17,-Y
0094 938A ST R24,-Y
0095 93EA ST R30,-Y
0096 93FA ST R31,-Y
0097 B62F IN R2,0x3F
0098 922A ST R2,-Y
(0048) }
(0049)
(0050) #pragma interrupt_handler T0_ov:10
(0051) void T0_ov(void)
(0052) {
(0053) uchar t;
(0054) TIFR^=0X1;
0099 E081 LDI R24,1
009A B628 IN R2,0x38
009B 2628 EOR R2,R24
009C BE28 OUT 0x38,R2
(0055) switch (key)
009D 91000061 LDS R16,_key
009F 2711 CLR R17
00A0 3000 CPI R16,0
00A1 0701 CPC R16,R17
00A2 F089 BEQ 0x00B4
00A3 3001 CPI R16,1
00A4 E0E0 LDI R30,0
00A5 071E CPC R17,R30
00A6 F0A1 BEQ 0x00BB
00A7 3002 CPI R16,2
00A8 E0E0 LDI R30,0
00A9 071E CPC R17,R30
00AA F0B9 BEQ 0x00C2
00AB 3003 CPI R16,3
00AC E0E0 LDI R30,0
00AD 071E CPC R17,R30
00AE F0D1 BEQ 0x00C9
00AF 3004 CPI R16,4
00B0 E0E0 LDI R30,0
00B1 071E CPC R17,R30
00B2 F0E9 BEQ 0x00D0
00B3 C023 RJMP 0x00D7
(0056) {case 0: OCR0=12; PORTD=array[0];break; //-90度
00B4 E08C LDI R24,0xC
00B5 BF8C OUT 0x3C,R24
00B6 E5E4 LDI R30,0x54
00B7 E0F0 LDI R31,0
00B8 91E4 LPM R30,0(Z)
00B9 BBE2 OUT 0x12,R30
00BA C022 RJMP 0x00DD
(0057) case 1: OCR0= 25; PORTD=array[1];break; //-45度
00BB E189 LDI R24,0x19
00BC BF8C OUT 0x3C,R24
00BD E5E5 LDI R30,0x55
00BE E0F0 LDI R31,0
00BF 91E4 LPM R30,0(Z)
00C0 BBE2 OUT 0x12,R30
00C1 C01B RJMP 0x00DD
(0058) case 2: OCR0=36; PORTD=array[2];break; //0度
00C2 E284 LDI R24,0x24
00C3 BF8C OUT 0x3C,R24
00C4 E5E6 LDI R30,0x56
00C5 E0F0 LDI R31,0
00C6 91E4 LPM R30,0(Z)
00C7 BBE2 OUT 0x12,R30
00C8 C014 RJMP 0x00DD
(0059) case 3: OCR0=48; PORTD=array[3];break; //45度
00C9 E380 LDI R24,0x30
00CA BF8C OUT 0x3C,R24
00CB E5E7 LDI R30,0x57
00CC E0F0 LDI R31,0
00CD 91E4 LPM R30,0(Z)
00CE BBE2 OUT 0x12,R30
00CF C00D RJMP 0x00DD
(0060) case 4: OCR0=60; PORTD=array[4];break; //90度
00D0 E38C LDI R24,0x3C
00D1 BF8C OUT 0x3C,R24
00D2 E5E8 LDI R30,0x58
00D3 E0F0 LDI R31,0
00D4 91E4 LPM R30,0(Z)
00D5 BBE2 OUT 0x12,R30
00D6 C006 RJMP 0x00DD
(0061) default:OCR0=36; PORTD=array[0] ; }
00D7 E284 LDI R24,0x24
00D8 BF8C OUT 0x3C,R24
00D9 E5E4 LDI R30,0x54
00DA E0F0 LDI R31,0
00DB 91E4 LPM R30,0(Z)
00DC BBE2 OUT 0x12,R30
(0062) }
00DD 9029 LD R2,Y+
00DE BE2F OUT 0x3F,R2
00DF 91F9 LD R31,Y+
00E0 91E9 LD R30,Y+
00E1 9189 LD R24,Y+
00E2 9119 LD R17,Y+
00E3 9109 LD R16,Y+
00E4 9029 LD R2,Y+
00E5 9518 RETI
(0063)
(0064)
(0065)
(0066)
(0067) main()
(0068) {
(0069) intial();
_main:
00E6 DF68 RCALL _intial
(0070) do
(0071) {/*_CLI();
(0072) key=key_decord();
(0073) _SEI();
(0074) */
(0075) key=0;
00E7 2422 CLR R2
00E8 92200061 STS _key,R2
(0076) }while(1);
00EA CFFC RJMP 0x00E7
(0077)
(0078)
(0079) }
FILE: <library>
00EB 9508 RET
push_gset1:
00EC 935A ST R21,-Y
00ED 934A ST R20,-Y
00EE 9508 RET
pop_gset1:
00EF E0E1 LDI R30,1
pop:
00F0 9149 LD R20,Y+
00F1 9159 LD R21,Y+
00F2 FDE0 SBRC R30,0
00F3 9508 RET
00F4 9169 LD R22,Y+
00F5 9179 LD R23,Y+
00F6 FDE1 SBRC R30,1
00F7 9508 RET
00F8 90A9 LD R10,Y+
00F9 90B9 LD R11,Y+
00FA FDE2 SBRC R30,2
00FB 9508 RET
00FC 90C9 LD R12,Y+
00FD 90D9 LD R13,Y+
00FE FDE3 SBRC R30,3
00FF 9508 RET
0100 90E9 LD R14,Y+
0101 90F9 LD R15,Y+
0102 9508 RET
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -