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

📄 pwm_ser.s

📁 avr 单片机 iccavr 平台
💻 S
字号:
	.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

⌨️ 快捷键说明

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