?? pwm_ser.s
字號(hào):
.module pwm_ser.c
.area data(ram, con, rel)
_counter::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\myavr\PWM_SER\pwm_ser.c
.dbsym e counter _counter c
.area lit(rom, con, rel)
_array::
.byte 160,249
.byte 196,208
.byte 153,146
.dbsym e array _array A[6:6]kc
.area text(rom, con, rel)
.dbfile E:\myavr\PWM_SER\pwm_ser.c
.dbfunc e intial _intial fV
.even
_intial::
.dbline -1
.dbline 10
; #include<iom16v.h>
; #include<macros.h>
; #define uchar unsigned char
; #define uint unsigned int
; #define xtal 6
; uchar counter=0;
; uchar key;
; const uchar array[6]={0xa0,0xf9,0xc4,0xd0,0x99,0x92};
; void intial(void)
; {
.dbline 11
; TCCR0=0X6c;
ldi R24,108
out 0x33,R24
.dbline 12
; TCNT0=0X0;
clr R2
out 0x32,R2
.dbline 13
; TIMSK=0X1;
ldi R24,1
out 0x39,R24
.dbline 14
; TIFR=0X0;
out 0x38,R2
.dbline 15
; DDRB=0x8; //PB3輸出
ldi R24,8
out 0x17,R24
.dbline 16
; PORTB=0x8;
out 0x18,R24
.dbline 17
; DDRA=0xFC; //Pa0,Pa1輸入
ldi R24,252
out 0x1a,R24
.dbline 18
; PORTA=0Xff;
ldi R24,255
out 0x1b,R24
.dbline 19
; DDRD=0XFF;
out 0x11,R24
.dbline 20
; PORTD=0X0;
out 0x12,R2
.dbline 21
; _SEI();
sei
.dbline -2
.dbline 22
; }
L1:
.dbline 0 ; func end
ret
.dbend
.dbfunc e delay10ms _delay10ms fV
; j -> R16
; i -> R18,R19
.even
_delay10ms::
.dbline -1
.dbline 25
;
; void delay10ms(void)
; {
.dbline 27
; uint i;
; uchar j=10;
ldi R16,10
xjmp L4
L3:
.dbline 29
; while(j--)
; {
.dbline 30
; for(i=1;i<(uint)(xtal*143-2);i++)
ldi R18,1
ldi R19,0
xjmp L9
L6:
.dbline 31
L7:
.dbline 30
subi R18,255 ; offset = 1
sbci R19,255
L9:
.dbline 30
cpi R18,88
ldi R30,3
cpc R19,R30
brlo L6
.dbline 32
L4:
.dbline 28
mov R2,R16
clr R3
subi R16,1
tst R2
brne L3
.dbline -2
.dbline 33
; ;
; }
; }
L2:
.dbline 0 ; func end
ret
.dbsym r j 16 c
.dbsym r i 18 i
.dbend
.dbfunc e key_decord _key_decord fc
; y -> R20
; t -> R20
.even
_key_decord::
xcall push_gset1
.dbline -1
.dbline 36
;
; uchar key_decord(void)
; {
.dbline 39
; uchar y;
; uchar t;
; t=PINA&3;
in R20,0x19
andi R20,3
.dbline 40
; delay10ms();
xcall _delay10ms
.dbline 41
; t=PINA&3;
in R20,0x19
andi R20,3
.dbline 42
; switch (t)
clr R21
cpi R20,0
cpc R20,R21
breq L14
X0:
cpi R20,1
ldi R30,0
cpc R21,R30
breq L15
cpi R20,2
ldi R30,0
cpc R21,R30
breq L16
xjmp L11
X1:
.dbline 43
L14:
.dbline 43
; {case 0: y=2;break;
ldi R20,2
.dbline 43
xjmp L12
L15:
.dbline 44
; case 1: y=3;break;
ldi R20,3
.dbline 44
xjmp L12
L16:
.dbline 45
; case 2: y=1;break;
ldi R20,1
.dbline 45
xjmp L12
L11:
.dbline 46
; default: y=0;}
clr R20
.dbline 46
L12:
.dbline 47
; return(y);
mov R16,R20
.dbline -2
L10:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r y 20 c
.dbsym r t 20 c
.dbend
.area vector(rom, abs)
.org 36
jmp _T0_ov
.area text(rom, con, rel)
.dbfile E:\myavr\PWM_SER\pwm_ser.c
.dbfunc e T0_ov _T0_ov fV
; t -> <dead>
.even
_T0_ov::
st -y,R2
st -y,R16
st -y,R17
st -y,R24
st -y,R30
st -y,R31
in R2,0x3f
st -y,R2
.dbline -1
.dbline 52
; }
;
; #pragma interrupt_handler T0_ov:10
; void T0_ov(void)
; {
.dbline 54
; uchar t;
; TIFR^=0X1;
ldi R24,1
in R2,0x38
eor R2,R24
out 0x38,R2
.dbline 55
; switch (key)
lds R16,_key
clr R17
cpi R16,0
cpc R16,R17
breq L21
X2:
cpi R16,1
ldi R30,0
cpc R17,R30
breq L22
cpi R16,2
ldi R30,0
cpc R17,R30
breq L24
cpi R16,3
ldi R30,0
cpc R17,R30
breq L26
cpi R16,4
ldi R30,0
cpc R17,R30
breq L28
xjmp L18
X3:
.dbline 56
L21:
.dbline 56
; {case 0: OCR0=12; PORTD=array[0];break; //-90度
ldi R24,12
out 0x3c,R24
.dbline 56
ldi R30,<_array
ldi R31,>_array
lpm R30,Z
out 0x12,R30
.dbline 56
xjmp L19
L22:
.dbline 57
; case 1: OCR0= 25; PORTD=array[1];break; //-45度
ldi R24,25
out 0x3c,R24
.dbline 57
ldi R30,<_array+1
ldi R31,>_array+1
lpm R30,Z
out 0x12,R30
.dbline 57
xjmp L19
L24:
.dbline 58
; case 2: OCR0=36; PORTD=array[2];break; //0度
ldi R24,36
out 0x3c,R24
.dbline 58
ldi R30,<_array+2
ldi R31,>_array+2
lpm R30,Z
out 0x12,R30
.dbline 58
xjmp L19
L26:
.dbline 59
; case 3: OCR0=48; PORTD=array[3];break; //45度
ldi R24,48
out 0x3c,R24
.dbline 59
ldi R30,<_array+3
ldi R31,>_array+3
lpm R30,Z
out 0x12,R30
.dbline 59
xjmp L19
L28:
.dbline 60
; case 4: OCR0=60; PORTD=array[4];break; //90度
ldi R24,60
out 0x3c,R24
.dbline 60
ldi R30,<_array+4
ldi R31,>_array+4
lpm R30,Z
out 0x12,R30
.dbline 60
xjmp L19
L18:
.dbline 61
ldi R24,36
out 0x3c,R24
.dbline 61
ldi R30,<_array
ldi R31,>_array
lpm R30,Z
out 0x12,R30
.dbline 61
L19:
.dbline -2
.dbline 62
; default:OCR0=36; PORTD=array[0] ; }
; }
L17:
ld R2,y+
out 0x3f,R2
ld R31,y+
ld R30,y+
ld R24,y+
ld R17,y+
ld R16,y+
ld R2,y+
.dbline 0 ; func end
reti
.dbsym l t 1 c
.dbend
.dbfunc e main _main fI
.even
_main::
.dbline -1
.dbline 68
;
;
;
;
; main()
; {
.dbline 69
; intial();
xcall _intial
L31:
.dbline 71
; do
; {/*_CLI();
.dbline 75
; key=key_decord();
; _SEI();
; */
; key=0;
clr R2
sts _key,R2
.dbline 76
L32:
.dbline 76
xjmp L31
X4:
.dbline -2
.dbline 79
; }while(1);
;
;
; }
L30:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile E:\myavr\PWM_SER\pwm_ser.c
_key::
.blkb 1
.dbsym e key _key c
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -