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

📄 ad.s

📁 基于ATMEGA16的AD转换的C程序源代码
💻 S
📖 第 1 页 / 共 3 页
字号:
	.module ad.c
	.area text(rom, con, rel)
	.dbfile D:\垃圾站\00\adc\ad.c
	.dbfile D:\垃圾站\00\adc\delay.h
	.dbfunc e delay_nus _delay_nus fV
;           time -> R16,R17
	.even
_delay_nus::
	.dbline -1
	.dbline 33
; //#define 	F_CPU 		12000000
; #define 	F_CPU 		11059200
; //#define 	F_CPU 			8000000
; //#define 	F_CPU 			7372800
; //#define 	F_CPU 			4000000
; /*************************************************************************
; 通用延时头文件:
; 			   delay_nus(n)延时n微秒
; 			   delay_nms(n)延时n毫秒
; *************************************************************************/
; #if F_CPU == 12000000
; 	void delay_nus(unsigned int time)
; 	{
; 	 	while (time!=0)
; 		{
; 		 	NOP();NOP();NOP();NOP();NOP();NOP();NOP();NOP();
; 			time--;
; 		}
; 	}
; 	void delay_nms(unsigned int time)
; 	{
;  	 	unsigned int i;
; 		while (time!=0)
; 		{
; 		 	for(i=0;i<1740;i++);
; 			time--;
; 		}
; 	}
; #endif
; 
; #if F_CPU == 11059200
; 	void delay_nus(unsigned int time)
; 	{
	xjmp L3
L2:
	.dbline 35
; 	 	while (time!=0)
; 		{
	.dbline 36
; 		 	NOP();NOP();NOP();NOP();NOP();NOP();NOP();
	nop
	.dbline 36
	nop
	.dbline 36
	nop
	.dbline 36
	nop
	.dbline 36
	nop
	.dbline 36
	nop
	.dbline 36
	nop
	.dbline 37
; 			time--;
	subi R16,1
	sbci R17,0
	.dbline 38
; 		}
L3:
	.dbline 34
	cpi R16,0
	cpc R16,R17
	brne L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbsym r time 16 i
	.dbend
	.dbfunc e delay_nms _delay_nms fV
;              i -> R20,R21
;           time -> R16,R17
	.even
_delay_nms::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 41
; 	}
; 	void delay_nms(unsigned int time)
; 	{
	xjmp L7
L6:
	.dbline 44
;  	 	unsigned int i;
; 		while (time!=0)
; 		{
	.dbline 45
; 		 	for(i=0;i<1580;i++);	
	clr R20
	clr R21
	xjmp L12
L9:
	.dbline 45
L10:
	.dbline 45
	subi R20,255  ; offset = 1
	sbci R21,255
L12:
	.dbline 45
	cpi R20,44
	ldi R30,6
	cpc R21,R30
	brlo L9
X1:
	.dbline 46
; 			time--;
	subi R16,1
	sbci R17,0
	.dbline 47
; 		}
L7:
	.dbline 43
	cpi R16,0
	cpc R16,R17
	brne L6
X2:
	.dbline -2
L5:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r i 20 i
	.dbsym r time 16 i
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\垃圾站\00\adc\delay.h
_a::
	.blkb 2
	.area idata
	.byte 48,49
	.area data(ram, con, rel)
	.dbfile D:\垃圾站\00\adc\delay.h
	.blkb 2
	.area idata
	.byte 50,51
	.area data(ram, con, rel)
	.dbfile D:\垃圾站\00\adc\delay.h
	.blkb 2
	.area idata
	.byte 52,53
	.area data(ram, con, rel)
	.dbfile D:\垃圾站\00\adc\delay.h
	.blkb 2
	.area idata
	.byte 54,55
	.area data(ram, con, rel)
	.dbfile D:\垃圾站\00\adc\delay.h
	.blkb 2
	.area idata
	.byte 56,57
	.area data(ram, con, rel)
	.dbfile D:\垃圾站\00\adc\delay.h
	.dbfile D:\垃圾站\00\adc\lcd.h
	.dbsym e a _a A[10:10]c
_ADbz::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile D:\垃圾站\00\adc\lcd.h
	.dbsym e ADbz _ADbz c
	.area text(rom, con, rel)
	.dbfile D:\垃圾站\00\adc\lcd.h
	.dbfunc e delay _delay fV
;              i -> R10
;              n -> R16
	.even
_delay::
	st -y,R10
	st -y,R11
	.dbline -1
	.dbline 8
; unsigned char a[10]={'0','1','2','3','4','5','6','7','8','9'};
; unsigned char ADtmp,ADbz=0;
; #define LCD_DATAL PORTA&=~BIT(1)
; #define LCD_DATAH PORTA|=BIT(1) 
; #define LCD_CLKL PORTA&=~BIT(3)
; #define LCD_CLKH PORTA|=BIT(3)
; void delay(unsigned char n)
; {	 
	.dbline 10
; 	 unsigned char i;
;  	 for(i=0;i<n;i++)                //延时
	clr R10
	xjmp L17
L14:
	.dbline 11
; 	 {asm("nop");}
	.dbline 11
	nop
	.dbline 11
L15:
	.dbline 10
	inc R10
L17:
	.dbline 10
	cp R10,R16
	brlo L14
X3:
	.dbline -2
L13:
	.dbline 0 ; func end
	ld R11,y+
	ld R10,y+
	ret
	.dbsym r i 10 c
	.dbsym r n 16 c
	.dbend
	.dbfunc e lcd_out _lcd_out fV
;              s -> <dead>
;              i -> R20
;      send_byte -> R10
	.even
_lcd_out::
	xcall push_xgset300C
	mov R10,R16
	.dbline -1
	.dbline 17
; }
; //*************************************************************************
; 
; //***************************************************************************
; void lcd_out(unsigned char send_byte)
; {    
	.dbline 19
;     unsigned char i,s;
;  	for (i=0;i<8;i++)
	clr R20
	xjmp L22
L19:
	.dbline 20
; 	{
	.dbline 21
; 	 if((send_byte&0x80)==0)
	sbrc R10,7
	rjmp L23
X4:
	.dbline 22
; 	 {
	.dbline 23
; 	     LCD_DATAL;
	cbi 0x1b,1
	.dbline 24
; 	 }
	xjmp L24
L23:
	.dbline 26
; 	 else
; 	 {
	.dbline 27
; 	     LCD_DATAH;
	sbi 0x1b,1
	.dbline 28
; 	 }      //送数据
L24:
	.dbline 29
; 	 LCD_CLKL;
	cbi 0x1b,3
	.dbline 30
; 	 LCD_CLKH;
	sbi 0x1b,3
	.dbline 31
; 	 send_byte=send_byte<<1;
	lsl R10
	.dbline 32
; 	}
L20:
	.dbline 19
	inc R20
L22:
	.dbline 19
	cpi R20,8
	brlo L19
X5:
	.dbline 33
; 	delay(256);
	ldi R16,0
	xcall _delay
	.dbline -2
L18:
	.dbline 0 ; func end
	xjmp pop_xgset300C
	.dbsym l s 1 c
	.dbsym r i 20 c
	.dbsym r send_byte 10 c
	.dbend
	.dbfunc e WR_dat _WR_dat fV
;              s -> R20
;            dat -> R22
	.even
_WR_dat::
	xcall push_xgsetF000
	mov R22,R16
	.dbline -1
	.dbline 38
; }
; //***************************************************************************
; 
; void WR_dat(unsigned char dat)
; {
	.dbline 40
;      unsigned char s;
; 	 s=dat&0xf0;
	mov R20,R22
	andi R20,240
	.dbline 41
; 	 lcd_out(0xfa);
	ldi R16,250
	xcall _lcd_out
	.dbline 42
; 	 lcd_out(s);
	mov R16,R20
	xcall _lcd_out
	.dbline 43
; 	 s=dat&0x0f;
	mov R20,R22
	andi R20,15
	.dbline 44
; 	 s<<=4;
	mov R24,R20
	andi R24,#0x0F
	swap R24
	mov R20,R24
	.dbline 45
; 	 lcd_out(s);
	mov R16,R24
	xcall _lcd_out
	.dbline -2
L25:
	.dbline 0 ; func end
	xjmp pop_xgsetF000
	.dbsym r s 20 c
	.dbsym r dat 22 c
	.dbend
	.dbfunc e WR_control _WR_control fV
;              s -> R20
;            dat -> R22
	.even
_WR_control::
	xcall push_xgsetF000
	mov R22,R16
	.dbline -1
	.dbline 49
; }
; //**************************************************************************
; void WR_control(unsigned char dat)
; {
	.dbline 51
;      unsigned char s;
; 	 s=dat&0xf0;
	mov R20,R22
	andi R20,240
	.dbline 52
; 	 lcd_out(0xf8);
	ldi R16,248
	xcall _lcd_out
	.dbline 53
; 	 lcd_out(s);
	mov R16,R20
	xcall _lcd_out
	.dbline 54
; 	 s=dat&0x0f;
	mov R20,R22
	andi R20,15
	.dbline 55
; 	 s<<=4;
	mov R24,R20
	andi R24,#0x0F
	swap R24
	mov R20,R24
	.dbline 56
; 	 lcd_out(s);
	mov R16,R24
	xcall _lcd_out
	.dbline -2
L26:
	.dbline 0 ; func end
	xjmp pop_xgsetF000
	.dbsym r s 20 c
	.dbsym r dat 22 c
	.dbend
	.dbfunc e lcd_control _lcd_control fV
	.even
_lcd_control::
	.dbline -1
	.dbline 60
; }
; //**************************************************************************
; void lcd_control()
; {
	.dbline 61
; 	WR_control(0x30);
	ldi R16,48
	xcall _WR_control
	.dbline 62
; 	WR_control(0x0c);
	ldi R16,12
	xcall _WR_control
	.dbline -2
L27:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e lcd_clear _lcd_clear fV
;              i -> R20,R21
	.even
_lcd_clear::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 66
; }
; //**************************************************************************
; void lcd_clear()
; {
	.dbline 68
;   int i;
;   WR_control(0x01);
	ldi R16,1
	xcall _WR_control
	.dbline 69
;   for(i=0;i<5000;i++)	//	延时5ms
	clr R20
	clr R21
L29:
	.dbline 70
; 	{
	.dbline 71
; 		asm("nop");
	nop
	.dbline 72
; 		asm("nop");
	nop
	.dbline 74
; 		
; 	} 
L30:
	.dbline 69
	subi R20,255  ; offset = 1
	sbci R21,255
	.dbline 69
	cpi R20,136
	ldi R30,19
	cpc R21,R30
	brlt L29
X6:
	.dbline -2
L28:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r i 20 I
	.dbend
	.dbfunc e LCD_address _LCD_address fV
;        address -> R20
;              y -> R22
;              x -> R10
	.even
_LCD_address::
	xcall push_xgsetF00C
	mov R22,R18
	mov R10,R16
	.dbline -1
	.dbline 83
; }
; /*******************************************************/
; /******   函数名称: LCD_set_xy()                  ******/
; /******   功    能: 设置LCD显示坐标               ******/
; /******   参    数: 显示字符串的位置,X:0-15,Y:0-1*****/
; /******   返回值  : 无                            ******/
; /*******************************************************/
; void LCD_address( unsigned char x, unsigned char y )
; {
	.dbline 85
;  	unsigned char address;
; 	switch(x)
	mov R20,R10
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L37
X7:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L38
X8:
	cpi R20,2
	ldi R30,0
	cpc R21,R30
	breq L39
X9:
	cpi R20,3
	ldi R30,0
	cpc R21,R30
	breq L40
X10:
	xjmp L34
L37:
	.dbline 88
; 	{
; 	 	case 0:
; 			   address = 0x80 + y+1;		   //计算显示地址
	mov R20,R22
	subi R20,127    ; addi 129
	.dbline 89
; 			   break;
	xjmp L35
L38:
	.dbline 91
; 		case 1:
; 			   address = 0x90 + y+1;		   //计算显示地址
	mov R20,R22
	subi R20,111    ; addi 145
	.dbline 92
; 			   break;
	xjmp L35
L39:
	.dbline 94
; 		case 2:
; 			   address = 0x88 + y+1;		   //计算显示地址
	mov R20,R22
	subi R20,119    ; addi 137
	.dbline 95
; 			   break;
	xjmp L35
L40:
	.dbline 97
; 		case 3:
; 			   address = 0x98 + y+1;		   //计算显示地址
	mov R20,R22
	subi R20,103    ; addi 153
	.dbline 98
; 			   break;
	xjmp L35
L34:
	.dbline 99
; 		default:address = 0x80 + y;
	mov R20,R22
	subi R20,128    ; addi 128
	.dbline 100
; 	}
L35:
	.dbline 101
; 	WR_control( address);	  	   	   		   //写地址命令
	mov R16,R20
	xcall _WR_control
	.dbline -2
L33:
	.dbline 0 ; func end
	xjmp pop_xgsetF00C
	.dbsym r address 20 c
	.dbsym r y 22 c
	.dbsym r x 10 c
	.dbend
	.dbfunc e LCD_Write_string _LCD_Write_string fV
;              s -> R20,R21
;              Y -> R12
;              X -> R10
	.even
_LCD_Write_string::
	xcall push_xgset303C
	mov R12,R18
	mov R10,R16
	ldd R20,y+6
	ldd R21,y+7
	.dbline -1
	.dbline 112
; }
; //**************************************************************************
; /*******************************************************/
; /******   函数名称: LCD_write_string()            ******/
; /******   功    能: 中英文字符串显示函数          ******/
; /******   参    数: *s--英文字符串指针            ******/
; /******             X、Y--显示字符串的位置        ******/
; /******   返回值  : 无                            ******/
; /*******************************************************/
; void LCD_Write_string(unsigned char X,unsigned char Y,unsigned char *s)
; {
	.dbline 114

⌨️ 快捷键说明

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