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

📄 ad.s

📁 atmega16单片机AD转换源代码
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module ad.c
	.area text(rom, con, rel)
	.dbfile D:\AVR\AD/HD7279.C
	.dbfunc e init_7279 _init_7279 fV
;            tmr -> R20,R21
	.even
_init_7279::
	xcall push_gset1
	.dbline -1
	.dbline 170
; //ICC-AVR application builder : 2005-6-21 15:56:32
; // Target : M16
; // Crystal: 8.0000Mhz
; 
; #include <iom16v.h>
; #include <macros.h>
; #include "HD7279.C"
; #include "TIMEDELAY.C"
; unsigned int adc_rel;
; unsigned int adc_old;
; unsigned char ad_mux;
; 
; 
; 
; 
; void port_init(void)
; {
;  PORTA = 0xFF;
;  DDRA  = 0x00;
;  PORTB = 0xFF;
;  DDRB  = 0x00;
;  PORTC = 0xFF; //m103 output only
;  DDRC  = 0x1E;
;  PORTD = 0xFF;
;  DDRD  = 0x00;
; }
; 
; //ADC initialisation
; // Conversion time: 104uS
; void adc_init(void)
; {
;  PORTA = 0X00;
;  PORTA = 0Xff;
;  
;  ADCSR = 0x00; //disable adc
;  ADMUX = ( 0<< REFS0 )|( 0<< REFS1 )|ad_mux & 0x0f; //select adc input 0		  //00000000
;  ACSR  = ( 1<< ACD); 			
;  ADCSR = (1 << ADEN ) |( 1 << ADSC ) |( 1 << ADIE ) | BIT( ADPS2)| BIT( ADPS1);
; }
; 
; void bubble_sort(int *x, int n)
; {
;  int j, k, h, t;
;   
;  for (h=n-1; h>0; h=k) /*循环到没有比较范围*/
;  {
;   for (j=0, k=0; j<h; j++) /*每次预置k=0,循环扫描后更新k*/
;   {
;    if (*(x+j) > *(x+j+1)) /*大的放在后面,小的放到前面*/
;    {
;     t = *(x+j);
;     *(x+j) = *(x+j+1);
;     *(x+j+1) = t; /*完成交换*/
;     k = j; /*保存最后下沉的位置。这样k后面的都是排序排好了的。*/
;    }
;   }
;  }
; }
; 
; 
; int  adc()
; {
;  int result[12];
;  long sum = 0;
;  char i; 
;  for( i = 0; i < 12; i ++ )	  //中值数字滤波
;  {
;   delay_ms( 1 );
;   ADCSRA |= BIT( ADSC );
;   while( !( ADCSRA & BIT( ADIF ) ) );
;   ADCSRA &= ~BIT( ADIF );
;   result[ i ] = ADC;
;  }
;  bubble_sort( result, 12 );
;  for( i = 1; i < 11; i ++ )
;   sum += result[ i ];
;  return (int)( sum / 10 );
; }
; 
; 
; #pragma interrupt_handler adc_isr:15
; void adc_isr(void)
; {
; 	
;  //conversion complete, read value (int) using...
;  CLI();
;  ADMUX = ( 0<< REFS0 )|( 0 << REFS1 )|ad_mux & 0x0f;
;  //adc_rel = ADC & 0X03FF;
;  adc_rel=adc();
;  
;  
;  //if( adc_old != adc_rel)
;  if (ad_mux==0)
;  	{
;  	 dis_data(0,3,adc_rel);
; 	 //write7279(DECODE0+4,0x80+ad_mux); 
;  	 adc_old = adc_rel;
;  	}
;  //else dis_data( 0,4, adc_rel);
;  else 
;  	{
;  	 dis_data(4,7,adc_rel);
; 	 //write7279(DECODE0+4,0x80+ad_mux); 
;  	 adc_old = adc_rel;
;  	}
;  
;  
;  if(ad_mux<1)
;  	ad_mux++;
;  else
;  	ad_mux=0;
; 	
; 	
; ADCSR |= BIT( ADSC); 
;  SEI();
;  
; }
; 
; 
; 
; //call this routine to initialise all peripherals
; void init_devices(void)
; {
;  //stop errant interrupts until set up
;  CLI(); //disable all interrupts
;  port_init();
;  adc_init();
; 
;  MCUCR = 0x00;
;  GICR  = 0x00;
;  TIMSK = 0x00; //timer interrupt sources
;  SEI(); //re-enable interrupts
;  //all peripherals are now initialised
; }
; 
; //
; void main(void)
; {
; 	int  i;
; 	ad_mux = 0x00;
; 	adc_old = 0x0000;
;  	init_devices();
;  	init_7279();
; 	//insert your functional code here...
; 	
; 	ADCSR |= BIT( ADSC );
; 	while(1)
; 	{
; //	 dis_data(0,3,1234);
; //	 dis_data(4,7,5678);
; 	}
; 	
; }
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 173
; 
; 
; 
	sbi 0x14,1
	.dbline 174
; 
	sbi 0x14,2
	.dbline 175
; 
	sbi 0x14,3
	.dbline 176
; 
	cbi 0x14,4
	.dbline 178
; 
; 
	sbi 0x15,1
	.dbline 179
; 
	sbi 0x15,2
	.dbline 180
; 
	sbi 0x15,3
	.dbline 181
; 
	sbi 0x15,4
	.dbline 183
	clr R20
	clr R21
	xjmp L5
L2:
	.dbline 183
L3:
	.dbline 183
	subi R20,255  ; offset = 1
	sbci R21,255
L5:
	.dbline 183
; 
; 
	cpi R20,0
	ldi R30,240
	cpc R21,R30
	brlo L2
	.dbline 185
; 
; 
	ldi R16,164
	xcall _send_byte
	.dbline -2
	.dbline 187
; 
; 
L1:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r tmr 20 i
	.dbend
	.dbfunc e write7279 _write7279 fV
;            dta -> R20
;            cmd -> R22
	.even
_write7279::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 197
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 198
; 
	mov R16,R22
	xcall _send_byte
	.dbline 199
; 
	mov R16,R20
	xcall _send_byte
	.dbline -2
	.dbline 200
; 
L6:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r dta 20 c
	.dbsym r cmd 22 c
	.dbend
	.dbfunc e read7279 _read7279 fc
	.even
_read7279::
	.dbline -1
	.dbline 210
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 211
; 
	ldi R16,21
	xcall _send_byte
	.dbline 212
; 
	.dbline -2
L7:
	.dbline 0 ; func end
	xjmp _receive_byte
	.dbend
	.dbfunc e get_key7279 _get_key7279 fc
;         KeyNum -> R20
	.even
_get_key7279::
	xcall push_gset1
	.dbline -1
	.dbline 224
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
L9:
	.dbline 226
L10:
	.dbline 226
; 
; 
	sbic 0x13,4
	rjmp L9
	.dbline 228
; 
; 
	ldi R16,1
	ldi R17,0
	xcall _delay10ms
	.dbline 230
; 
; 
	xcall _read7279
	.dbline 232
; 
; 
	xcall _num_change7279
	mov R20,R16
	.dbline 234
; 
; 
	ldi R16,1
	ldi R17,0
	xcall _delay10ms
L12:
	.dbline 236
L13:
	.dbline 236
; 
; 
	sbis 0x13,4
	rjmp L12
	.dbline 238
; 
; 
	mov R16,R20
	.dbline -2
L8:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r KeyNum 20 c
	.dbend
	.dbfunc e long_delay _long_delay fV
;              i -> R16
	.even
_long_delay::
	.dbline -1
	.dbline 245
; 
; 
; 
; 
; 
; 
; 
	.dbline 247
	clr R16
	xjmp L19
L16:
	.dbline 247
L17:
	.dbline 247
	inc R16
L19:
	.dbline 247
; 
; 
	cpi R16,80
	brlo L16
	.dbline -2
	.dbline 248
; 
L15:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend
	.dbfunc e short_delay _short_delay fV
;              i -> R16
	.even
_short_delay::
	.dbline -1
	.dbline 252
; 
; 
; 
; 
	.dbline 254
	clr R16
	xjmp L24
L21:
	.dbline 254
L22:
	.dbline 254
	inc R16
L24:
	.dbline 254
; 
; 
	cpi R16,46
	brlo L21
	.dbline -2
	.dbline 255
; 
L20:
	.dbline 0 ; func end
	ret
	.dbsym r i 16 c
	.dbend
	.dbfunc e delay10ms _delay10ms fV
;              i -> R20
;              j -> R22
;              k -> R10
;          count -> R16,R17
	.even
_delay10ms::
	xcall push_gset3
	.dbline -1
	.dbline 259
; 
; 
; 
; 
	.dbline 261
; 
; 
	clr R20
	xjmp L29
L26:
	.dbline 262
; 
	clr R22
	xjmp L33
L30:
	.dbline 263
	clr R10
	xjmp L37
L34:
	.dbline 263
L35:
	.dbline 263
	inc R10
L37:
	.dbline 263
	mov R24,R10
	cpi R24,100
	brlo L34
L31:
	.dbline 262
	inc R22
L33:
	.dbline 262
	cpi R22,100
	brlo L30
L27:
	.dbline 261
	inc R20
L29:
	.dbline 261
	mov R2,R20
	clr R3
	cp R2,R16
	cpc R3,R17
	brlo L26
	.dbline -2
	.dbline 264
; 
; 
L25:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r j 22 c
	.dbsym r k 10 c
	.dbsym r count 16 i
	.dbend
	.dbfunc e send_byte _send_byte fV
;              i -> R20
;       out_byte -> R22
	.even
_send_byte::
	xcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 274
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 277
; 
; 
; 
	cbi 0x15,2
	.dbline 278
; 
	cbi 0x15,1
	.dbline 279
; 
	xcall _long_delay
	.dbline 281
; 
; 
	clr R20
	xjmp L42
L39:
	.dbline 282
; 
	.dbline 283
; 
	sbrs R22,7
	rjmp L43
	.dbline 284
; 
	.dbline 285
; 
	sbi 0x15,3
	.dbline 286
; 
	xjmp L44
L43:
	.dbline 288
; 
; 
	.dbline 289
; 
	cbi 0x15,3
	.dbline 290
; 
L44:
	.dbline 291
	sbi 0x15,2
	.dbline 292
	xcall _short_delay
	.dbline 293
	cbi 0x15,2
	.dbline 294
	xcall _short_delay
	.dbline 295
	lsl R22
	.dbline 296
L40:
	.dbline 281
	inc R20
L42:
	.dbline 281
	cpi R20,8
	brlo L39
	.dbline 297
; 
; 
; 
; 
; 
; 
; 
	sbi 0x15,3
	.dbline -2
	.dbline 298
; 
L38:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r out_byte 22 c
	.dbend
	.dbfunc e receive_byte _receive_byte fc
;              i -> R20
;        in_byte -> R22
	.even
_receive_byte::
	xcall push_gset2
	.dbline -1
	.dbline 308
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 311
; 
; 
; 
	sbi 0x15,2
	.dbline 313
; 
; 
	cbi 0x14,3
	.dbline 315
; 
; 
	xcall _long_delay
	.dbline 317
; 
; 
	clr R20
	xjmp L49
L46:
	.dbline 318
; 
	.dbline 319
; 
	sbi 0x15,2
	.dbline 320
; 
	xcall _short_delay
	.dbline 321
; 
	lsl R22
	.dbline 322
; 
	sbis 0x13,3
	rjmp L50
	.dbline 323
; 
	.dbline 324
; 
	ori R22,1
	.dbline 325
; 
L50:
	.dbline 326
	cbi 0x15,2
	.dbline 327
	xcall _short_delay
	.dbline 329
L47:
	.dbline 317
	inc R20
L49:
	.dbline 317
	cpi R20,8
	brlo L46
	.dbline 330
; 
; 
; 
; 
; 
	sbi 0x14,3
	.dbline 331
; 
	mov R16,R22
	.dbline -2
L45:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r i 20 c
	.dbsym r in_byte 22 c
	.dbend
	.dbfunc e num_change7279 _num_change7279 fc
	.area func_lit(rom, con, rel)
L72:
	.word `L59
	.word `L58
	.word `L57
	.word `L56
	.word `L53
	.word `L53
	.word `L53
	.word `L53
	.word `L63
	.word `L62
	.word `L61
	.word `L60
	.word `L53
	.word `L53
	.word `L53
	.word `L53
	.word `L67
	.word `L66
	.word `L65
	.word `L64
	.word `L53
	.word `L53
	.word `L53
	.word `L53
	.word `L71
	.word `L70
	.word `L69
	.word `L68
	.area text(rom, con, rel)
	.dbfile D:\AVR\AD/HD7279.C
;              X -> R20
	.even
_num_change7279::
	xcall push_gset1
	mov R20,R16
	.dbline -1
	.dbline 342
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 343
; 
	clr R21
	cpi R20,0
	ldi R30,0
	cpc R21,R30
	brge X1
	xjmp L53
X1:
	ldi R24,27
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brge X2
	xjmp L53
X2:
	ldi R16,2
	ldi R17,0
	movw R18,R20
	xcall empy16s
	movw R30,R16
	ldi R24,<L72
	ldi R25,>L72
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ijmp
X0:
	.dbline 344
; 
L56:
	.dbline 345
; 
	ldi R16,1
	xjmp L52
L57:
	.dbline 346
; 
	ldi R16,2
	xjmp L52
L58:
	.dbline 347
; 
	ldi R16,3
	xjmp L52
L59:
	.dbline 348
; 
	ldi R16,4
	xjmp L52
L60:
	.dbline 349
; 
	ldi R16,5
	xjmp L52
L61:
	.dbline 350
; 
	ldi R16,6
	xjmp L52
L62:
	.dbline 351
; 
	ldi R16,7
	xjmp L52
L63:
	.dbline 352
; 
	ldi R16,8
	xjmp L52
L64:
	.dbline 353
; 
	ldi R16,9
	xjmp L52
L65:
	.dbline 354
; 
	clr R16
	xjmp L52
L66:
	.dbline 355
; 
	ldi R16,10
	xjmp L52
L67:
	.dbline 356
; 
	ldi R16,11
	xjmp L52
L68:
	.dbline 357
; 
	ldi R16,12
	xjmp L52
L69:
	.dbline 358
; 
	ldi R16,13
	xjmp L52
L70:
	.dbline 359
; 
	ldi R16,14
	xjmp L52
L71:
	.dbline 360
; 
	ldi R16,15
	xjmp L52
L53:
	.dbline 361
; 
	ldi R16,255
	.dbline -2
L52:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r X 20 c
	.dbend
	.dbfunc e dis_data _dis_data fV
;      temp_char -> R10
;              i -> R12
;            num -> y+10
;        dig_end -> R14
;      dig_start -> R10
	.even
_dis_data::
	xcall push_gset5
	mov R14,R18
	mov R10,R16
	.dbline -1
	.dbline 496
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
; 
	.dbline 499
; 
; 
; 
	mov R12,R10
	xjmp L77
L74:
	.dbline 500
	.dbline 501

⌨️ 快捷键说明

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