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

📄 test.s

📁 max144源代码
💻 S
📖 第 1 页 / 共 2 页
字号:
;  else
;   fuhao=' ';
	ldi R22,32
L38:
	.dbline 148
;  data[0]=fuhao;
	std y+0,R22
	.dbline 149
;  data[1]=dat/1000+0x30; dat%=1000;
	ldi R18,1000
	ldi R19,3
	movw R16,R20
	xcall div16s
	movw R24,R16
	adiw R24,48
	std y+1,R24
	.dbline 149
	ldi R18,1000
	ldi R19,3
	movw R16,R20
	xcall mod16s
	movw R20,R16
	.dbline 150
;  data[2]=dat/100+0x30;  dat%=100;
	ldi R18,100
	ldi R19,0
	xcall div16s
	movw R24,R16
	adiw R24,48
	std y+2,R24
	.dbline 150
	ldi R18,100
	ldi R19,0
	movw R16,R20
	xcall mod16s
	movw R20,R16
	.dbline 151
;  data[3]=dat/10+0x30; 
	ldi R18,10
	ldi R19,0
	xcall div16s
	movw R24,R16
	adiw R24,48
	std y+3,R24
	.dbline 152
;  data[4]=dat%10+0x30; 
	ldi R18,10
	ldi R19,0
	movw R16,R20
	xcall mod16s
	movw R24,R16
	adiw R24,48
	std y+4,R24
	.dbline 154
;  
;  LCD_set_xy(X,Y);
	mov R18,R12
	mov R16,R10
	xcall _LCD_set_xy
	.dbline 155
;  for(i=0;i<5;i++)
	clr R20
	xjmp L46
L43:
	.dbline 156
;   LCD_write_char(0,data[i]);
	movw R24,R28
	mov R30,R20
	clr R31
	add R30,R24
	adc R31,R25
	ldd R18,z+0
	clr R19
	clr R16
	clr R17
	xcall _LCD_write_char
L44:
	.dbline 155
	inc R20
L46:
	.dbline 155
	cpi R20,5
	brlo L43
X9:
	.dbline -2
L36:
	.dbline 0 ; func end
	adiw R28,5
	xjmp pop_xgsetF03C
	.dbsym r fuhao 22 c
	.dbsym l data 0 A[5:5]c
	.dbsym r i 20 c
	.dbsym r dat 20 I
	.dbsym r Y 12 c
	.dbsym r X 10 c
	.dbend
	.dbfile D:\iccavr\mega16\11\max144\max144.h
	.dbfunc e max144_read _max144_read fV
;            adc -> y+0
;       adc_temp -> R10,R11
;           temp -> R12
	.even
_max144_read::
	xcall push_xgsetF03C
	sbiw R28,4
	.dbline -1
	.dbline 14
; //**********ADC口线定义**********//
; #define  adc_cs    PA5 
; #define  adc_sdat  PA6
; #define  adc_sclk  PA7
; #define  adc_port  PORTA
; #define  adc_ddr   DDRA
; #define  adc_pin   PINA
; 
; unsigned int adc_out1,adc_out0;
; unsigned int adcttemp[2][15];
; unsigned int adcfirst[2];
; 
; void max144_read(void)
; {
	.dbline 16
;   unsigned char temp;
;   unsigned int adc_temp=0;
	clr R10
	clr R11
	.dbline 20
;   unsigned long adc;
;   
;   /*********max144模拟SPI口线设置**********/
;   adc_port|=BIT(adc_cs)|BIT(adc_sdat)|BIT(adc_sclk);
	in R24,0x1b
	ori R24,224
	out 0x1b,R24
	.dbline 21
;   adc_ddr|=BIT(adc_cs)|BIT(adc_sclk);
	in R24,0x1a
	ori R24,160
	out 0x1a,R24
	.dbline 22
;   adc_ddr&=~BIT(adc_sdat);
	cbi 0x1a,6
	.dbline 24
; 
;   adc_port|=BIT(adc_cs);
	sbi 0x1b,5
	.dbline 25
;   adc_port|=BIT(adc_sclk);
	sbi 0x1b,7
	.dbline 26
;   adc_port&=~BIT(adc_cs);
	cbi 0x1b,5
	.dbline 27
;   asm("nop");asm("nop");asm("nop");asm("nop");
	nop
	.dbline 27
	nop
	.dbline 27
	nop
	.dbline 27
	nop
	.dbline 28
;   adc_port&=~BIT(adc_sclk);
	cbi 0x1b,7
	xjmp L49
L48:
	.dbline 30
;   while(1) 
;   { 
	.dbline 31
;     if((adc_pin&BIT(adc_sdat))==BIT(adc_sdat)) 
	in R24,0x19
	andi R24,64
	cpi R24,64
	brne L51
X10:
	.dbline 32
; 	break; 
	xjmp L50
L51:
	.dbline 33
;    }
L49:
	.dbline 29
	xjmp L48
L50:
	.dbline 34
;   temp=16; while(temp--)
	ldi R24,16
	mov R12,R24
	xjmp L54
L53:
	.dbline 35
;   {
	.dbline 36
;      adc_port|=BIT(adc_sclk); 
	sbi 0x1b,7
	.dbline 37
;      if((adc_pin&BIT(adc_sdat))==BIT(adc_sdat)) 
	in R24,0x19
	andi R24,64
	cpi R24,64
	brne L56
X11:
	.dbline 38
;        adc_temp++; 
	movw R24,R10
	adiw R24,1
	movw R10,R24
L56:
	.dbline 39
;      adc_temp=adc_temp<<1;   
	lsl R10
	rol R11
	.dbline 40
;      adc_port&=~BIT(adc_sclk);
	cbi 0x1b,7
	.dbline 41
;   }
L54:
	.dbline 34
	mov R2,R12
	clr R3
	mov R24,R2
	subi R24,1
	mov R12,R24
	tst R2
	brne L53
X12:
	.dbline 42
;   adc_port|=BIT(adc_cs);
	sbi 0x1b,5
	.dbline 44
; 
;   if((adc_temp&0x2000)==0x2000)
	movw R24,R10
	andi R24,0
	andi R25,32
	cpi R24,0
	ldi R26,32
	cpc R25,R26
	breq X16
	xjmp L58
X16:
X13:
	.dbline 45
;   {
	.dbline 46
;     adcfirst[0]=(adc_temp>>1)&0xfff;
	movw R24,R10
	lsr R25
	ror R24
	andi R25,15
	sts _adcfirst+1,R25
	sts _adcfirst,R24
	.dbline 47
; 	adc_temp&=0x1ffc;
	movw R24,R10
	andi R24,252
	andi R25,31
	movw R10,R24
	.dbline 48
; 	adc=adc_temp;
	movw R2,R24
	clr R4
	clr R5
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 49
; 	adcttemp[0][14]=adc_temp;
	sts _adcttemp+28+1,R11
	sts _adcttemp+28,R10
	.dbline 50
;     for(temp=0;temp<14;temp++) 
	clr R12
	xjmp L64
L61:
	.dbline 51
; 	{
	.dbline 52
; 	  adcttemp[0][temp]=adcttemp[0][temp+1];
	ldi R24,<_adcttemp
	ldi R25,>_adcttemp
	mov R30,R12
	clr R31
	adiw R30,1
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	mov R30,R12
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	std z+1,R3
	std z+0,R2
	.dbline 53
;       adc+=adcttemp[0][temp];
	mov R30,R12
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	clr R4
	clr R5
	ldd R6,y+0
	ldd R7,y+1
	ldd R8,y+2
	ldd R9,y+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std y+0,R6
	std y+1,R7
	std y+2,R8
	std y+3,R9
	.dbline 54
; 	}
L62:
	.dbline 50
	inc R12
L64:
	.dbline 50
	mov R24,R12
	cpi R24,14
	brlo L61
X14:
	.dbline 55
;     adc/=15;
	ldi R20,15
	ldi R21,0
	ldi R22,0
	ldi R23,0
	ldd R16,y+0
	ldd R17,y+1
	ldd R18,y+2
	ldd R19,y+3
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	std y+0,R16
	std y+1,R17
	std y+2,R18
	std y+3,R19
	.dbline 56
;     adc_temp=adc;
	ldd R10,y+0
	ldd R11,y+1
	.dbline 57
;     adc_out1=adc>>1;
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	lsr R5
	ror R4
	ror R3
	ror R2
	sts _adc_out1+1,R3
	sts _adc_out1,R2
	.dbline 58
;   }
	xjmp L59
L58:
	.dbline 60
;   else 
;   {
	.dbline 61
;     adcfirst[1]=(adc_temp>>1)&0xfff;
	movw R24,R10
	lsr R25
	ror R24
	andi R25,15
	sts _adcfirst+2+1,R25
	sts _adcfirst+2,R24
	.dbline 62
; 	adc_temp&=0x1ffc;
	movw R24,R10
	andi R24,252
	andi R25,31
	movw R10,R24
	.dbline 63
; 	adc=adc_temp;
	movw R2,R24
	clr R4
	clr R5
	std y+0,R2
	std y+1,R3
	std y+2,R4
	std y+3,R5
	.dbline 64
; 	adcttemp[1][14]=adc_temp;
	sts _adcttemp+30+28+1,R11
	sts _adcttemp+30+28,R10
	.dbline 65
;     for(temp=0;temp<14;temp++) 
	clr R12
	xjmp L71
L68:
	.dbline 66
; 	{
	.dbline 67
; 	  adcttemp[1][temp]=adcttemp[1][temp+1];
	ldi R24,<_adcttemp+30
	ldi R25,>_adcttemp+30
	mov R30,R12
	clr R31
	adiw R30,1
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	mov R30,R12
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	std z+1,R3
	std z+0,R2
	.dbline 68
;       adc+=adcttemp[1][temp];
	mov R30,R12
	clr R31
	lsl R30
	rol R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R3,z+1
	clr R4
	clr R5
	ldd R6,y+0
	ldd R7,y+1
	ldd R8,y+2
	ldd R9,y+3
	add R6,R2
	adc R7,R3
	adc R8,R4
	adc R9,R5
	std y+0,R6
	std y+1,R7
	std y+2,R8
	std y+3,R9
	.dbline 69
; 	}
L69:
	.dbline 65
	inc R12
L71:
	.dbline 65
	mov R24,R12
	cpi R24,14
	brlo L68
X15:
	.dbline 70
;     adc/=15;
	ldi R20,15
	ldi R21,0
	ldi R22,0
	ldi R23,0
	ldd R16,y+0
	ldd R17,y+1
	ldd R18,y+2
	ldd R19,y+3
	st -y,R23
	st -y,R22
	st -y,R21
	st -y,R20
	xcall div32u
	std y+0,R16
	std y+1,R17
	std y+2,R18
	std y+3,R19
	.dbline 71
;     adc_temp=adc;
	ldd R10,y+0
	ldd R11,y+1
	.dbline 72
;     adc_out0=adc>>1;
	ldd R2,y+0
	ldd R3,y+1
	ldd R4,y+2
	ldd R5,y+3
	lsr R5
	ror R4
	ror R3
	ror R2
	sts _adc_out0+1,R3
	sts _adc_out0,R2
	.dbline 73
;   }
L59:
	.dbline -2
L47:
	.dbline 0 ; func end
	adiw R28,4
	xjmp pop_xgsetF03C
	.dbsym l adc 0 l
	.dbsym r adc_temp 10 i
	.dbsym r temp 12 c
	.dbend
	.dbfile D:\iccavr\mega16\11\max144\test.c
	.dbfunc e mcu_init _mcu_init fV
	.even
_mcu_init::
	.dbline -1
	.dbline 14
; //ICC-AVR application builder : 2008-11-4 9:30:11
; // Target : M16
; // Crystal: 8Mhz
; 
; #include <iom16v.h>
; #include <macros.h>
; 
; 
; #include "delay.h"
; #include "lcd1602.h"
; #include "max144.h"
; 
; void mcu_init(void)
; {
	.dbline 15
;  LCD_init();
	xcall _LCD_init
	.dbline -2
L75:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 19
; }
; 
; void main(void)
; {
	.dbline 20
;  mcu_init();
	xcall _mcu_init
	.dbline 22
;  
;  LCD_write_string(0,0,"  MAX144 TEST    ");
	ldi R24,<L77
	ldi R25,>L77
	std y+1,R25
	std y+0,R24
	clr R18
	clr R16
	xcall _LCD_write_string
	xjmp L79
L78:
	.dbline 24
;  while(1)
;  {
	.dbline 25
;   max144_read();
	xcall _max144_read
	.dbline 26
;   LCD_write_data(0,1,adc_out1);
	lds R2,_adc_out1
	lds R3,_adc_out1+1
	std y+1,R3
	std y+0,R2
	ldi R18,1
	clr R16
	xcall _LCD_write_data
	.dbline 27
;  }
L79:
	.dbline 23
	xjmp L78
X17:
	.dbline -2
L76:
	.dbline 0 ; func end
	adiw R28,2
	ret
	.dbend
	.area data(ram, con, rel)
	.dbfile D:\iccavr\mega16\11\max144\test.c
_Edit1::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile D:\iccavr\mega16\11\max144\test.c
	.dbsym e Edit1 _Edit1 I
_CheckBox2::
	.blkb 2
	.area idata
	.word 1
	.area data(ram, con, rel)
	.dbfile D:\iccavr\mega16\11\max144\test.c
	.dbsym e CheckBox2 _CheckBox2 I
_Edit3::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile D:\iccavr\mega16\11\max144\test.c
	.dbsym e Edit3 _Edit3 I
_Edit13::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile D:\iccavr\mega16\11\max144\test.c
	.dbsym e Edit13 _Edit13 I
_Edit9::
	.blkb 2
	.area idata
	.word 16384
	.area data(ram, con, rel)
	.dbfile D:\iccavr\mega16\11\max144\test.c
	.dbsym e Edit9 _Edit9 I
_Edit10::
	.blkb 2
	.area idata
	.word 1024
	.area data(ram, con, rel)
	.dbfile D:\iccavr\mega16\11\max144\test.c
	.dbsym e Edit10 _Edit10 I
_ComboBox2::
	.blkb 2
	.area idata
	.word 18
	.area data(ram, con, rel)
	.dbfile D:\iccavr\mega16\11\max144\test.c
	.dbsym e ComboBox2 _ComboBox2 I
_RadioGroup1::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile D:\iccavr\mega16\11\max144\test.c
	.dbsym e RadioGroup1 _RadioGroup1 I

⌨️ 快捷键说明

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