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

📄 main.s

📁 AD/DA转换,通过外挂LCD显示转换数据数据值
💻 S
字号:
	.module main.c
	.area text(rom, con, rel)
	.dbfile E:\新建文件夹\ADDA_ICC\cfile\main.c
	.dbfunc e main _main fV
;           test -> R10,R11
;             RS -> R22,R23
;              j -> y+2
;          value -> R20,R21
;          count -> R10,R11
	.even
_main::
	sbiw R28,6
	.dbline -1
	.dbline 18
; #define ENABLE_BIT_DEFINITIONS
; 
; #include "includes.h"
; 
; 
; 
; //#define Vref 50000
; void init_adc(void);
; void WDR(void);
; void WDT_init(void);
; 
; //unsigned char adc_mux = 0x01;  //通道选择
; 
; unsigned char RSend;
; unsigned char RS_buf[10];
; unsigned char RS_flag;
; void main(void)
; {       
	.dbline 21
;     float j;  
;     int count;
;     unsigned char *test = "The Voltage is: ";
	ldi R24,<L2
	ldi R25,>L2
	movw R10,R24
	.dbline 22
;     unsigned char *value = "0.000 V";	
	ldi R20,<L3
	ldi R21,>L3
	.dbline 24
;     unsigned char *RS;
;     RS = RS_buf;
	ldi R22,<_RS_buf
	ldi R23,>_RS_buf
	.dbline 25
;     RS_flag = 0;
	clr R2
	sts _RS_flag,R2
	.dbline 26
;     delay_nms(1);   
	ldi R16,1
	ldi R17,0
	xcall _delay_nms
	.dbline 28
;     //dataport=0xff;
;     OSCCAL=0Xab;//系统时钟校准,不同的芯片和不的频率,
	ldi R24,171
	out 0x31,R24
	.dbline 29
;     init_adc();	
	xcall _init_adc
	.dbline 30
;     InitSerial();    
	xcall _InitSerial
	.dbline 32
;     //init_time1();
;     Init_LCD();  
	xcall _Init_LCD
	.dbline 35
;    // WDT_init();
;           
;     LCD_DisplayString(1,1,test);    
	std y+1,R11
	std y+0,R10
	ldi R18,1
	ldi R16,1
	xcall _LCD_DisplayString
	.dbline 36
;     LCD_DisplayString(2,1,value);    
	std y+1,R21
	std y+0,R20
	ldi R18,1
	ldi R16,2
	xcall _LCD_DisplayString
	.dbline 37
;     put_string(value);  
	movw R16,R20
	xcall _put_string
	.dbline 38
;     put_char(0x0d);
	ldi R16,13
	ldi R17,0
	xcall _put_char
	.dbline 39
;     put_char(0x0a);     
	ldi R16,10
	ldi R17,0
	xcall _put_char
	xjmp L5
L4:
	.dbline 41
;     while(1) 
;     {        
	.dbline 43
;        //j = (float)(((float)((Vref/1023)))*(ADCH*256+ADCL))/1000.00;
;         j = (float)(((float)((Vref/1023)))*( ADC&0X3FF))/1000.00;
	ldi R16,<L7
	ldi R17,>L7
	xcall lpm32
	movw R2,R16
	movw R4,R18
	in R16,0x4
	in R17,0x5
	andi R17,3
	xcall uint2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R16,R2
	movw R18,R4
	xcall fpmule2
	movw R2,R16
	movw R4,R18
	ldi R16,<L8
	ldi R17,>L8
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	movw R16,R2
	movw R18,R4
	xcall fpdiv2
	std y+2,R16
	std y+3,R17
	std y+4,R18
	std y+5,R19
	.dbline 44
; 	count = j*100;					
	ldi R16,<L9
	ldi R17,>L9
	xcall lpm32
	movw R24,R28
	adiw R24,2
	st -y,R25
	st -y,R24
	xcall fpmule1
	xcall fpint
	movw R10,R16
	.dbline 45
;         value[0] = count /1000+0x30;
	ldi R18,1000
	ldi R19,3
	xcall div16s
	movw R24,R16
	adiw R24,48
	movw R30,R20
	std z+0,R24
	.dbline 46
;         count = count %1000;
	ldi R18,1000
	ldi R19,3
	movw R16,R10
	xcall mod16s
	movw R10,R16
	.dbline 47
;         value[2] = count /100+0x30;
	ldi R18,100
	ldi R19,0
	xcall div16s
	movw R24,R16
	adiw R24,48
	movw R30,R20
	std z+2,R24
	.dbline 48
;         count = count %100;
	ldi R18,100
	ldi R19,0
	movw R16,R10
	xcall mod16s
	movw R10,R16
	.dbline 49
;         value[3] = count  /10 + 0x30;			 
	ldi R18,10
	ldi R19,0
	xcall div16s
	movw R24,R16
	adiw R24,48
	movw R30,R20
	std z+3,R24
	.dbline 50
;         value[4] = count  %10 + 0x30;			 
	ldi R18,10
	ldi R19,0
	movw R16,R10
	xcall mod16s
	movw R24,R16
	adiw R24,48
	movw R30,R20
	std z+4,R24
	.dbline 52
;       
;         LCD_Cursor(0,1);
	ldi R18,1
	clr R16
	xcall _LCD_Cursor
	.dbline 53
;         LCD_DisplayString(2,1,value);  
	std y+1,R21
	std y+0,R20
	ldi R18,1
	ldi R16,2
	xcall _LCD_DisplayString
	.dbline 54
;         put_string(value); 
	movw R16,R20
	xcall _put_string
	.dbline 55
;         put_char(0x0d);
	ldi R16,13
	ldi R17,0
	xcall _put_char
	.dbline 56
;         put_char(0x0a);        
	ldi R16,10
	ldi R17,0
	xcall _put_char
	.dbline 57
;         delay_nms(1000);       
	ldi R16,1000
	ldi R17,3
	xcall _delay_nms
	.dbline 58
;          if(RS_flag)
	lds R2,_RS_flag
	tst R2
	breq L10
X0:
	.dbline 59
;         {
	.dbline 60
;             LCD_DisplayString(2,10,RS);
	std y+1,R23
	std y+0,R22
	ldi R18,10
	ldi R16,2
	xcall _LCD_DisplayString
	.dbline 61
;             RS_flag = 0;
	clr R2
	sts _RS_flag,R2
	.dbline 62
;         }
L10:
	.dbline 63
;     }
L5:
	.dbline 40
	xjmp L4
X1:
	.dbline -2
L1:
	.dbline 0 ; func end
	adiw R28,6
	ret
	.dbsym r test 10 pc
	.dbsym r RS 22 pc
	.dbsym l j 2 D
	.dbsym r value 20 pc
	.dbsym r count 10 I
	.dbend
	.area vector(rom, abs)
	.org 44
	jmp _uart_rx_isr
	.area text(rom, con, rel)
	.dbfile E:\新建文件夹\ADDA_ICC\cfile\main.c
	.dbfunc e uart_rx_isr _uart_rx_isr fV
	.even
_uart_rx_isr::
	st -y,R0
	st -y,R1
	st -y,R2
	st -y,R3
	st -y,R4
	st -y,R5
	st -y,R6
	st -y,R7
	st -y,R8
	st -y,R9
	st -y,R16
	st -y,R17
	st -y,R18
	st -y,R19
	st -y,R24
	st -y,R25
	st -y,R26
	st -y,R27
	st -y,R30
	st -y,R31
	in R0,0x3f
	st -y,R0
	.dbline -1
	.dbline 70
; 	
; }
; #pragma interrupt_handler uart_rx_isr:iv_USART_RXC
; void uart_rx_isr(void)
; /*#pragma vector = USART_RXC_vect
;     __interrupt void usart_isr( void )*/
; {
	.dbline 71
;     SREG &= !(1<<7);
	clr R2
	out 0x3f,R2
	.dbline 72
;     RS_flag = 1;
	ldi R24,1
	sts _RS_flag,R24
	.dbline 73
;     RSend++;
	lds R24,_RSend
	subi R24,255    ; addi 1
	sts _RSend,R24
	.dbline 74
;     RS_buf[RSend] = UDR;
	ldi R24,<_RS_buf
	ldi R25,>_RS_buf
	lds R30,_RSend
	clr R31
	add R30,R24
	adc R31,R25
	in R2,0xc
	std z+0,R2
	.dbline 75
;     put_char(RS_buf[RSend]);
	lds R30,_RSend
	clr R31
	add R30,R24
	adc R31,R25
	ldd R16,z+0
	clr R17
	xcall _put_char
	.dbline 76
;     if(RSend>=10)
	lds R24,_RSend
	cpi R24,10
	brlo L13
X2:
	.dbline 77
;     {
	.dbline 78
;         RSend = 0;
	clr R2
	sts _RSend,R2
	.dbline 79
;     } 
L13:
	.dbline 80
;     SREG |= (1<<7);   
	bset 7
	.dbline -2
L12:
	.dbline 0 ; func end
	ld R0,y+
	out 0x3f,R0
	ld R31,y+
	ld R30,y+
	ld R27,y+
	ld R26,y+
	ld R25,y+
	ld R24,y+
	ld R19,y+
	ld R18,y+
	ld R17,y+
	ld R16,y+
	ld R9,y+
	ld R8,y+
	ld R7,y+
	ld R6,y+
	ld R5,y+
	ld R4,y+
	ld R3,y+
	ld R2,y+
	ld R1,y+
	ld R0,y+
	reti
	.dbend
	.area bss(ram, con, rel)
	.dbfile E:\新建文件夹\ADDA_ICC\cfile\main.c
_RS_flag::
	.blkb 1
	.dbsym e RS_flag _RS_flag c
_RS_buf::
	.blkb 10
	.dbsym e RS_buf _RS_buf A[10:10]c
_RSend::
	.blkb 1
	.dbsym e RSend _RSend c
	.area lit(rom, con, rel)
L9:
	.word 0x0,0x42c8
L8:
	.word 0x0,0x447a
L7:
	.word 0x0,0x41c8
	.area data(ram, con, rel)
	.dbfile E:\新建文件夹\ADDA_ICC\cfile\main.c
L3:
	.blkb 8
	.area idata
	.byte 48,46,48,48,48,32,'V,0
	.area data(ram, con, rel)
	.dbfile E:\新建文件夹\ADDA_ICC\cfile\main.c
L2:
	.blkb 17
	.area idata
	.byte 'T,'h,'e,32,'V,'o,'l,'t,'a,'g,'e,32,'i,'s,58,32
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\新建文件夹\ADDA_ICC\cfile\main.c
; }
; 
; 

⌨️ 快捷键说明

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