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

📄 adc.s

📁 atmega128单片机实现模数转换并通过1602液晶显示出结果。
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module ADC.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\wdd\桌面\模数转换\ADC.c
	.dbfile C:\DOCUME~1\wdd\桌面\模数转换\1602.h
	.dbfunc e s_ms _s_ms fV
;             ms -> R16,R17
	.even
_s_ms::
	.dbline -1
	.dbline 9
; #include<iom128v.h>
; #include"1602.h"
; #define uchar unsigned char 
; #define uint unsigned int 
; 
; uchar adc_0[]={"ADC_0: .  V"};
; uchar adc_1[]={"ADC_1: .  V"};
; 
; 
	.dbline 10
; 
	xjmp L5
L2:
	.dbline 10
L3:
	.dbline 10
	subi R16,1
	sbci R17,0
L5:
	.dbline 10
	ldi R24,1
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlo L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r ms 16 i
	.dbend
	.dbfunc e busy _busy fV
;           temp -> R20
	.even
_busy::
	st -y,R20
	.dbline -1
	.dbline 15
; 
; 
; //ADC测试
; //主函数
; main()
	.dbline 17
; {
; uchar ten_1,ten_2,ten_3,ten_4,i;
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 18
; uint adc_data0,adc_l0,adc_h0,adc_data1,adc_l1,adc_h1;
	lds R24,101
	andi R24,254
	sts 101,R24
	.dbline 19
; DDRA=0xff;
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 20
; PORTA=0x00;
	lds R24,101
	ori R24,2
	sts 101,R24
	.dbline 21
; DDRB=0xff;
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	xjmp L8
L7:
	.dbline 23
; DDRD=0xff;
; PORTD=0x00;
	.dbline 24
; DDRF=0x00;
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 25
; PORTF=0x00;
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 26
; DDRG=0xff;
	clr R2
	out 0x1a,R2
	.dbline 27
; PORTG=0xff;
	ldi R24,255
	out 0x1b,R24
	.dbline 28
; 
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 29
; LcdInit();   //1602初始化
	in R20,0x19
	andi R20,128
	.dbline 30
; WriteChar(1,2,11,adc_0);
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 31
; WriteChar(2,2,11,adc_1);
	ldi R24,255
	out 0x1a,R24
	.dbline 32
; while(1)
	out 0x1b,R24
	.dbline 33
;      {
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 34
; 	  //取ADC_0
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 35
;       ADCSRA=0x00;
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 36
;       ADMUX=0x40;
L8:
	.dbline 22
	tst R20
	brne L7
X1:
	.dbline -2
L6:
	.dbline 0 ; func end
	ld R20,y+
	ret
	.dbsym r temp 20 c
	.dbend
	.dbfunc e writecom _writecom fV
;            com -> R10
	.even
_writecom::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 41
;       ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07;   //128分频
;       s_ms(500);                        //延时很重要
;       adc_l0=ADCL;
;       adc_h0=ADCH;
;       adc_data0=adc_h0<<8|adc_l0;  
	.dbline 42
;       adc_data0=adc_data0>>1;
	xcall _busy
	.dbline 43
;       adc_data0-=35;                        //修正
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 44
; 	  //取ADC_1
	lds R24,101
	andi R24,254
	sts 101,R24
	.dbline 45
;       ADCSRA=0x00;
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 46
;       ADMUX=0x41;
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 47
;       ADCSRA=(1<<ADEN)|(1<<ADSC)|(1<<ADFR)|0x07;   //128分频
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 48
;       s_ms(500);                        //延时很重要
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 49
;       adc_l1=ADCL;
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 50
;       adc_h1=ADCH;
	out 0x1b,R10
	.dbline 51
;       adc_data1=adc_h1<<8|adc_l1;  
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 52
;       adc_data1=adc_data1>>1;
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 53
;       adc_data1-=35;                        //修正
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline -2
L10:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r com 10 c
	.dbend
	.dbfunc e LcdInit _LcdInit fV
	.even
_LcdInit::
	.dbline -1
	.dbline 58
; 	  
; 	  
; 	  //显示ADC0
; 	  ten_3=(adc_data0)/100;
; 	  ten_2=(adc_data0-(ten_3*100))/10;
	.dbline 59
; 	  ten_1=adc_data0-(ten_3*100)-ten_2*10;
	ldi R16,56
	xcall _writecom
	.dbline 60
; 	  ten_1+=0x30;
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 61
; 	  ten_2+=0x30;
	ldi R16,1
	xcall _writecom
	.dbline 62
; 	  ten_3+=0x30;
	ldi R16,10000
	ldi R17,39
	xcall _s_ms
	.dbline 63
; 	  WriteNum(1,8,(ten_3));
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 64
; 	  WriteNum(1,10,(ten_2));
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 65
; 	  WriteNum(1,11,(ten_1));
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 66
; 	  //显示ADC1
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 67
; 	  ten_3=(adc_data1)/100;
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 68
; 	  ten_2=(adc_data1-(ten_3*100))/10;
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 69
; 	  ten_1=adc_data1-(ten_3*100)-ten_2*10;
	ldi R16,2
	xcall _writecom
	.dbline 70
; 	  ten_1+=0x30;
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 71
; 	  ten_2+=0x30;
	ldi R16,6
	xcall _writecom
	.dbline 72
; 	  ten_3+=0x30;
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 73
; 	  WriteNum(2,8,(ten_3));
	ldi R16,12
	xcall _writecom
	.dbline 74
; 	  WriteNum(2,10,(ten_2));
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline 75
; 	  WriteNum(2,11,(ten_1));
	ldi R16,56
	xcall _writecom
	.dbline 76
; 	  
	ldi R16,1000
	ldi R17,3
	xcall _s_ms
	.dbline -2
L11:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e writedata _writedata fV
;           data -> R10
	.even
_writedata::
	st -y,R10
	mov R10,R16
	.dbline -1
	.dbline 81
; 	  for(i=0;i<18;i++)
; 	     {
; 	      s_ms(60000);
; 	     }	
; 	 }
	.dbline 82
; }
	xcall _busy
	.dbline 83
; 
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 84
; 
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 85
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 86
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 87
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 88
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 89
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 90
	out 0x1b,R10
	.dbline 91
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 92
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 93
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline -2
L12:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r data 10 c
	.dbend
	.dbfunc e readdata _readdata fc
;           temp -> R10
	.even
_readdata::
	st -y,R10
	.dbline -1
	.dbline 99
	.dbline 101
	xcall _busy
	.dbline 102
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 103
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 104
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 105
	lds R24,101
	ori R24,2
	sts 101,R24
	.dbline 106
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 107
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 108
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 109
	clr R2
	out 0x1a,R2
	.dbline 110
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 111
	in R10,0x19
	.dbline 112
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 113
	ldi R24,255
	out 0x1a,R24
	.dbline 114
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 115
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 116
	ldi R16,500
	ldi R17,1
	xcall _s_ms
	.dbline 117
	mov R16,R10
	.dbline -2
L13:
	.dbline 0 ; func end
	ld R10,y+
	ret
	.dbsym r temp 10 c
	.dbend
	.dbfunc e WriteCGRAM _WriteCGRAM fV
;              t -> R10,R11
;              i -> R20,R21
;        pBuffer -> R22,R23
;            num -> R10,R11
	.even
_WriteCGRAM::
	xcall push_xgsetF00C
	movw R22,R18
	movw R10,R16
	.dbline -1
	.dbline 127
	.dbline 129
	ldi R16,64
	xcall _writecom
	.dbline 130
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 131
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 132
	movw R20,R10
	xjmp L18
L15:
	.dbline 133
	.dbline 134
	movw R30,R22
	elpm R10,Z+
	elpm R11,Z
	.dbline 135
	lds R24,101
	ori R24,4
	sts 101,R24
	.dbline 136
	out 0x1b,R10
	.dbline 137
	lds R24,101
	andi R24,251
	sts 101,R24
	.dbline 138
	subi R22,254  ; offset = 2
	sbci R23,255
	.dbline 139
L16:
	.dbline 132
	subi R20,1
	sbci R21,0
L18:
	.dbline 132
	cpi R20,0
	cpc R20,R21
	brne L15
X2:
	.dbline -2
L14:
	.dbline 0 ; func end
	xjmp pop_xgsetF00C
	.dbsym r t 10 i
	.dbsym r i 20 i
	.dbsym r pBuffer 22 pki
	.dbsym r num 10 i
	.dbend
	.dbfunc e WriteMenu _WriteMenu fV
;              t -> R10
;              i -> R22
;        pBuffer -> R20,R21
	.even
_WriteMenu::
	xcall push_xgsetF00C
	movw R20,R16
	.dbline -1
	.dbline 149
	.dbline 151
	ldi R16,128
	xcall _writecom
	.dbline 153
	lds R24,101
	ori R24,1
	sts 101,R24
	.dbline 154
	lds R24,101
	andi R24,253
	sts 101,R24
	.dbline 155
	ldi R16,50
	ldi R17,0
	xcall _s_ms

⌨️ 快捷键说明

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