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

📄 adc.s

📁 adc检测串口反馈到PC上,数据不断发送
💻 S
字号:
	.module adc.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc/abs.h
	.dbfunc e WDT_ON _WDT_ON fV
	.even
_WDT_ON::
	.dbline -1
	.dbline 9
; #include<iom16v.h>
; #include<macros.h>
; #include "abs.h" 
; 
;           /*   七段译码字形表     */        
; /*const unsigned char tabel[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
; 0x88,0x83,0xc6,0xa1,0x86,0x8e};*/
; //放一个串口通讯时自己能看懂的数据简单处理
; const unsigned char tabel[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x10,0x11,0x12,0x13,0x14,0x15};
	.dbline 10
;           /*     显示缓冲区       */
	wdr
	.dbline 11
; unsigned int d[]={0,0,0,0,0,0,0,0,0,0,0};
	in R24,0x21
	ori R24,31
	out 0x21,R24
	.dbline 12
; void port_init(void)//端口初始化
	in R24,0x21
	andi R24,239
	out 0x21,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e WDT_OFF _WDT_OFF fV
	.even
_WDT_OFF::
	.dbline -1
	.dbline 16
;  {
;     PORTA = 0x00;DDRA  = 0xff;  PORTB = 0x00;DDRB  = 0x00;
;     PORTC = 0x00;DDRC  = 0x00;  PORTD = 0xff;DDRD  = 0x00;
; 	DDRA  =0xff&((~(1<<PA3))|(~(1<<PA6)) );
	.dbline 17
;  }
	wdr
	.dbline 18
; void display()
	in R24,0x21
	ori R24,24
	out 0x21,R24
	.dbline 19
; {
	clr R2
	out 0x21,R2
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e delay_1ms _delay_1ms fV
;              i -> R16,R17
	.even
_delay_1ms::
	.dbline -1
	.dbline 22
;   USART_Transmit8(tabel[d[3]]);      //送数据
;   delay_nms(10);
;   USART_Transmit8(tabel[d[2]]);
	.dbline 24
;   delay_nms(10);
;   USART_Transmit8(tabel[d[1]]);
	clr R16
	clr R17
	xjmp L7
L4:
	.dbline 25
	wdr
L5:
	.dbline 24
	subi R16,255  ; offset = 1
	sbci R17,255
L7:
	.dbline 24
	cpi R16,150
	ldi R30,0
	cpc R17,R30
	brlo L4
	.dbline -2
L3:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R20,R21
;              n -> R22,R23
	.even
_delay_nms::
	xcall push_gset2
	movw R22,R16
	.dbline -1
	.dbline 29
;   delay_nms(10);
;   USART_Transmit8(tabel[d[0]]); 
;   delay_nms(10);
; }
; 
	.dbline 31
; unsigned int ad_con;//存放PA0的AD转换结果
; /*      将AD结果转换成电压     */
	clr R20
	clr R21
	xjmp L12
L9:
	.dbline 32
	.dbline 33
	xcall _delay_1ms
	.dbline 34
L10:
	.dbline 31
	subi R20,255  ; offset = 1
	sbci R21,255
L12:
	.dbline 31
	cp R20,R22
	cpc R21,R23
	brlo L9
	.dbline 35
; #define vref   502
; void adctovol(unsigned int adc)
;     {
; 	 unsigned int temp;
	wdr
	.dbline -2
L8:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 i
	.dbsym r n 22 i
	.dbend
	.dbfunc e LED_Wait_ISP _LED_Wait_ISP fV
	.even
_LED_Wait_ISP::
	.dbline -1
	.dbline 40
; 	 unsigned char i;
; 	 unsigned char *char_p;
;      temp=(unsigned int)(((unsigned long)((unsigned long)adc*vref))/1024);
;      for(i=0;i<3;i++)
; 	 {
	.dbline 41
;         d[i]=temp%10;
	cbi 0x1b,5
	.dbline 41
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 41
	sbi 0x1b,5
	.dbline 41
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 42
; 		temp=temp/10;
	cbi 0x1b,4
	.dbline 42
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 42
	sbi 0x1b,4
	.dbline 42
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 43
; 	}
	cbi 0x1b,5
	.dbline 43
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 43
	sbi 0x1b,5
	.dbline 43
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 44
;   	}
	cbi 0x1b,4
	.dbline 44
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 44
	sbi 0x1b,4
	.dbline 44
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 45
; 	
	cbi 0x1b,5
	.dbline 45
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 45
	sbi 0x1b,5
	.dbline 45
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 46
; /*      AD转换程序     */
	cbi 0x1b,4
	.dbline 46
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 46
	sbi 0x1b,5
	.dbline 46
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline -2
L13:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LED_Texting_ISP _LED_Texting_ISP fV
	.even
_LED_Texting_ISP::
	.dbline -1
	.dbline 49
; #pragma interrupt_handler adc_isr:15
; void adc_isr(void)
;    {
	.dbline 50
;     unsigned int temp=0;
	cbi 0x1b,4
	.dbline 51
; 	while(temp<6)
	cbi 0x1b,5
	.dbline 51
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 51
	sbi 0x1b,5
	.dbline 51
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 52
; 	    temp++;
	cbi 0x1b,5
	.dbline 52
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 52
	sbi 0x1b,5
	.dbline 52
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 53
; 	ad_con=ADC;    
	cbi 0x1b,5
	.dbline 53
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline 53
	sbi 0x1b,5
	.dbline 53
	ldi R16,200
	ldi R17,0
	xcall _delay_nms
	.dbline -2
L14:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e USART_InitM1681 _USART_InitM1681 fV
;            tmp -> R10,R11
;           baud -> R10,R11
	.even
_USART_InitM1681::
	xcall push_gset3
	movw R10,R16
	.dbline -1
	.dbline 57
;    	ADCSR|=(1<<ADSC);//启动转换
; 	} 
; //将AD转换结果转换成电压数值
; void main(void)
	.dbline 60
; {
; unsigned char i;
;  port_init();
	movw R2,R10
	clr R4
	clr R5
	ldi R20,0
	ldi R21,64
	ldi R22,56
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall div32s
	ldi R20,16
	ldi R21,0
	ldi R22,0
	ldi R23,0
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32s
	movw R2,R16
	movw R4,R18
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sub R2,R20
	sbc R3,R21
	sbc R4,R22
	sbc R5,R23
	movw R10,R2
	.dbline 61
;  WDT_ON();
	mov R2,R3
	clr R3
	out 0x20,R2
	.dbline 62
;  USART_InitM1681(9600);
	out 0x9,R10
	.dbline 64
;  Red_LedON;Green_LedON;
; 	delay_nms(500);        //延时1秒
	ldi R24,24
	out 0xa,R24
	.dbline 70
; 	Red_LedOFF; Green_LedOFF;
;     USART_Transmit8(2);
;     USART_Transmit8(0x0d); //发送一个回车
;     USART_Transmit8(0x0a); //发送一个换行
; 
;  MCUCSR=0;
	ldi R24,134
	out 0x20,R24
	.dbline -2
L15:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r tmp 10 i
	.dbsym r baud 10 i
	.dbend
	.dbfunc e USART_Transmit8 _USART_Transmit8 fV
;           data -> R16
	.even
_USART_Transmit8::
	.dbline -1
	.dbline 73
;  //ADMUX=0x00;//0通道
;  ADMUX=0x03;//3
;  // ADMUX=0x06;//6
L17:
	.dbline 75
L18:
	.dbline 75
;  ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIF)|(1<<ADIE)|0x06;
;  SEI();
	sbis 0xb,5
	rjmp L17
	.dbline 77
; 
;  i=0;
	out 0xc,R16
L20:
	.dbline 78
L21:
	.dbline 78
;  USART_Transmit_2();//发个Hello
	sbis 0xb,5
	rjmp L20
	.dbline -2
L16:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.dbfunc e USART_Transmit_2 _USART_Transmit_2 fV
	.even
_USART_Transmit_2::
	.dbline -1
	.dbline 82
;  while(1)
;     {
;      if((i==127)|(i==0))
; 	     adctovol(ad_con);//降低AD结果刷新速率
L24:
	.dbline 83
L25:
	.dbline 83
; 	display();			  //使末位闪烁不太明显
	sbis 0xb,5
	rjmp L24
	.dbline 84
; 	Red_D1glint;delay_nms(500);//红绿灯交替亮灭
	ldi R24,72
	out 0xc,R24
L27:
	.dbline 85
L28:
	.dbline 85
; 	Green_D1glint;delay_nms(500);
	sbis 0xb,5
	rjmp L27
	.dbline 86
; 	i++; 
	ldi R24,101
	out 0xc,R24
L30:
	.dbline 87
L31:
	.dbline 87
;     }
	sbis 0xb,5
	rjmp L30
	.dbline 88
;  }   
	ldi R24,108
	out 0xc,R24
L33:
	.dbline 89
L34:
	.dbline 89
;  }   
	sbis 0xb,5
	rjmp L33
	.dbline 90
;  }   
	ldi R24,108
	out 0xc,R24
L36:
	.dbline 91
L37:
	.dbline 91
;  }   
	sbis 0xb,5
	rjmp L36
	.dbline 92
;  }   
	ldi R24,111
	out 0xc,R24
	.dbline -2
L23:
	.dbline 0 ; func end
	ret
	.dbend
	.area lit(rom, con, rel)
_tabel::
	.byte 0,1
	.byte 2,3
	.byte 4,5
	.byte 6,7
	.byte 8,9
	.byte 16,17
	.byte 18,19
	.byte 20,21
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.dbsym e tabel _tabel A[16:16]kc
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
_d::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.dbsym e d _d A[22:11]i
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.dbfunc e port_init _port_init fV
	.even
_port_init::
	.dbline -1
	.dbline 13
	.dbline 14
	clr R2
	out 0x1b,R2
	.dbline 14
	ldi R24,255
	out 0x1a,R24
	.dbline 14
	out 0x18,R2
	.dbline 14
	out 0x17,R2
	.dbline 15
	out 0x15,R2
	.dbline 15
	out 0x14,R2
	.dbline 15
	out 0x12,R24
	.dbline 15
	out 0x11,R2
	.dbline 16
	out 0x1a,R24
	.dbline -2
L39:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e display _display fV
	.even
_display::
	.dbline -1
	.dbline 19
	.dbline 20
	ldi R24,<_tabel
	ldi R25,>_tabel
	lds R30,_d+6
	lds R31,_d+6+1
	add R30,R24
	adc R31,R25
	lpm R16,Z
	xcall _USART_Transmit8
	.dbline 21
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 22
	ldi R24,<_tabel
	ldi R25,>_tabel
	lds R30,_d+4
	lds R31,_d+4+1
	add R30,R24
	adc R31,R25
	lpm R16,Z
	xcall _USART_Transmit8
	.dbline 23
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 24
	ldi R24,<_tabel
	ldi R25,>_tabel
	lds R30,_d+2
	lds R31,_d+2+1
	add R30,R24
	adc R31,R25
	lpm R16,Z
	xcall _USART_Transmit8
	.dbline 25
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline 26
	ldi R24,<_tabel
	ldi R25,>_tabel
	lds R30,_d
	lds R31,_d+1
	add R30,R24
	adc R31,R25
	lpm R16,Z
	xcall _USART_Transmit8
	.dbline 27
	ldi R16,10
	ldi R17,0
	xcall _delay_nms
	.dbline -2
L40:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e adctovol _adctovol fV
;         char_p -> <dead>
;              i -> R10
;           temp -> R12,R13
;            adc -> R10,R11
	.even
_adctovol::
	xcall push_gset4
	movw R10,R16
	.dbline -1
	.dbline 34
	.dbline 38
	movw R2,R10
	clr R4
	clr R5
	ldi R20,246
	ldi R21,1
	ldi R22,0
	ldi R23,0
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	movw R16,R20
	movw R18,R22
	xcall empy32u
	ldi R24,10
	ldi R25,0
	st -y,R24
	xcall lsr32
	movw R12,R16
	.dbline 39
	clr R10
	xjmp L48
L45:
	.dbline 40
	.dbline 41
	ldi R24,2
	mul R24,R10
	movw R30,R0
	ldi R24,<_d
	ldi R25,>_d
	add R30,R24
	adc R31,R25
	ldi R18,10
	ldi R19,0
	movw R16,R12
	xcall mod16u
	std z+1,R17
	std z+0,R16
	.dbline 42
	ldi R18,10
	ldi R19,0
	movw R16,R12
	xcall div16u
	movw R12,R16
	.dbline 43
L46:
	.dbline 39
	inc R10
L48:
	.dbline 39
	mov R24,R10
	cpi R24,3
	brlo L45
	.dbline -2
L44:
	xcall pop_gset4
	.dbline 0 ; func end
	ret
	.dbsym l char_p 1 pc
	.dbsym r i 10 c
	.dbsym r temp 12 i
	.dbsym r adc 10 i
	.dbend
	.area vector(rom, abs)
	.org 56
	jmp _adc_isr
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
	.dbfunc e adc_isr _adc_isr fV
;           temp -> R16,R17
	.even
_adc_isr::
	st -y,R2
	st -y,R3
	st -y,R16
	st -y,R17
	st -y,R30
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 49
	.dbline 50
	clr R16
	clr R17
	xjmp L51
L50:
	.dbline 52
	subi R16,255  ; offset = 1
	sbci R17,255
L51:
	.dbline 51
	cpi R16,6
	ldi R30,0
	cpc R17,R30
	brlo L50
	.dbline 53
	in R2,0x4
	in R3,0x5
	sts _ad_con+1,R3
	sts _ad_con,R2
	.dbline 54
	sbi 0x6,6
	.dbline -2
L49:
	ld R2,y+
	out 0x3f,R2
	ld R30,y+
	ld R17,y+
	ld R16,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym r temp 16 i
	.dbend
	.dbfunc e main _main fV
;              i -> R20
	.even
_main::
	.dbline -1
	.dbline 58
	.dbline 60
	xcall _port_init
	.dbline 61
	xcall _WDT_ON
	.dbline 62
	ldi R16,9600
	ldi R17,37
	xcall _USART_InitM1681
	.dbline 63
	cbi 0x1b,5
	.dbline 63
	cbi 0x1b,4
	.dbline 64
	ldi R16,500
	ldi R17,1
	xcall _delay_nms
	.dbline 65
	sbi 0x1b,5
	.dbline 65
	sbi 0x1b,4
	.dbline 66
	ldi R16,2
	xcall _USART_Transmit8
	.dbline 67
	ldi R16,13
	xcall _USART_Transmit8
	.dbline 68
	ldi R16,10
	xcall _USART_Transmit8
	.dbline 70
	clr R2
	out 0x34,R2
	.dbline 72
	ldi R24,3
	out 0x7,R24
	.dbline 74
	ldi R24,222
	out 0x6,R24
	.dbline 75
	sei
	.dbline 77
	clr R20
	.dbline 78
	xcall _USART_Transmit_2
	xjmp L55
L54:
	.dbline 80
	.dbline 81
	cpi R20,127
	brne L59
	ldi R24,1
	ldi R25,0
	movw R10,R24
	xjmp L60
L59:
	clr R10
	clr R11
L60:
	tst R20
	brne L61
	ldi R22,1
	ldi R23,0
	xjmp L62
L61:
	clr R22
	clr R23
L62:
	movw R2,R10
	or R2,R22
	or R3,R23
	tst R2
	brne X0
	tst R3
	breq L57
X0:
	.dbline 82
	lds R16,_ad_con
	lds R17,_ad_con+1
	xcall _adctovol
L57:
	.dbline 83
	xcall _display
	.dbline 84
	.dbline 84
	in R2,0x19
	clr R3
	sbrc R2,5
	rjmp L63
	.dbline 84
	.dbline 84
	sbi 0x1b,5
	.dbline 84
	xjmp L64
L63:
	.dbline 84
	.dbline 84
	cbi 0x1b,5
	.dbline 84
L64:
	.dbline 84
	.dbline 84
	.dbline 84
	ldi R16,500
	ldi R17,1
	xcall _delay_nms
	.dbline 85
	.dbline 85
	in R2,0x19
	clr R3
	sbrc R2,4
	rjmp L65
	.dbline 85
	.dbline 85
	sbi 0x1b,4
	.dbline 85
	xjmp L66
L65:
	.dbline 85
	.dbline 85
	cbi 0x1b,4
	.dbline 85
L66:
	.dbline 85
	.dbline 85
	.dbline 85
	ldi R16,500
	ldi R17,1
	xcall _delay_nms
	.dbline 86
	inc R20
	.dbline 87
L55:
	.dbline 79
	xjmp L54
X1:
	.dbline -2
L53:
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\调试成功\adc\adc.c
_ad_con::
	.blkb 2
	.dbsym e ad_con _ad_con i

⌨️ 快捷键说明

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