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

📄 main.s

📁 详细介绍M8两版间通讯
💻 S
字号:
	.module Main.c
	.area data(ram, con, rel)
_ExtendRomRW::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
	.dbsym e ExtendRomRW _ExtendRomRW c
	.area lit(rom, con, rel)
L2:
	.byte 0
	.byte 0,0,0,0
	.area text(rom, con, rel)
	.dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
	.dbfunc e main _main fV
;        strTemp -> y+0
;              i -> R22
;        intTemp -> R10,R11
;           pStr -> R20,R21
	.even
_main::
	sbiw R28,5
	.dbline -1
	.dbline 19
; #include <iom8v.h>
; #include <macros.h>
; extern void timer0_init(void);
; extern void pwm1_init(void);
; extern void uart_init(void);
; extern void adc_init(void);
; extern void int_init(void);
; extern void TWI_init(void);
; 
; extern void puts(char *s);
; extern void putchar(unsigned char c);
; 
; extern unsigned char i2c_read(unsigned char RomAddress);
; extern void i2c_write(unsigned char Wdata,unsigned char RomAddress);
; 
; unsigned char ExtendRomAddr,ExtendRomVal;//定义片外EEPROM
; unsigned char ExtendRomRW=0b00000000;
; void main(void)
;  {
	.dbline 21
;  	unsigned int intTemp;
;  	unsigned char strTemp[5]={0},i;
	ldi R24,<L2
	ldi R25,>L2
	movw R30,R28
	ldi R16,5
	ldi R17,0
	st -y,R31
	st -y,R30
	st -y,R25
	st -y,R24
	rcall asgncblk
	.dbline 22
;  	unsigned char *pStr=strTemp;
	movw R20,R28
	.dbline 23
; 	OSCCAL=0x8e;//内部振荡器校正字,需要使用Ponygrog测试
	ldi R24,142
	out 0x31,R24
	.dbline 25
; 	//TCXO评估板上的TQFP上为0x8e,而DIP28的为0xa5
; 	uart_init();//初始化USRART
	rcall _uart_init
	.dbline 26
; 	puts("欢迎进入TCXO评估板调试程序");
	ldi R16,<L3
	ldi R17,>L3
	rcall _puts
	.dbline 27
; 	timer0_init();//初始化定时器
	rcall _timer0_init
	.dbline 28
; 	pwm1_init();//初始化PWM输出
	rcall _pwm1_init
	.dbline 29
; 	adc_init();//初始化ADC
	rcall _adc_init
	.dbline 30
; 	int_init();//int0,int1中断使能
	rcall _int_init
	.dbline 31
; 	TWI_init();
	rcall _TWI_init
	.dbline 32
; 	SEI();//开放全局中断
	sei
	.dbline 33
; 	OCR1A=655;//0.8v
	ldi R24,655
	ldi R25,2
	out 0x2b,R25
	out 0x2a,R24
	.dbline 34
; 	OCR1B=2459;//3v
	ldi R24,2459
	ldi R25,9
	out 0x29,R25
	out 0x28,R24
	.dbline 36
; 
; 	i2c_write(0x12,0x11);//写入外部EEPROM数据
	ldi R18,17
	ldi R16,18
	rcall _i2c_write
	.dbline 37
; 	puts("数据已经写入");
	ldi R16,<L4
	ldi R17,>L4
	rcall _puts
	rjmp L6
L5:
	.dbline 55
; 	
; 	/******************从机的数据发送尚未完成*************************************
; 	intTemp=(int)i2c_read((unsigned char)intTemp);//读取外部EEPROM数据
; 
; 	pStr+=3;//回到指针尾部,因为数据先计算出个位数(需将数据转换为BCD码输出)
; 	for(i=4;i!=0;i--)
; 	 {
; 		*pStr=intTemp%10+48;
; 		intTemp/=10;
; 		pStr--;
; 	 }
; 	pStr=strTemp;
; 	puts(pStr);
; 	puts("数据读完");
; 	*****************************************************************************/
; 	
; 	while(1)
; 	 {
	.dbline 56
; 	 	if(ExtendRomRW&0b00000010)
	lds R2,_ExtendRomRW
	sbrs R2,1
	rjmp L8
	.dbline 57
; 	 	 {
	.dbline 58
; 			intTemp=(int)i2c_read(ExtendRomAddr);//读取外部EEPROM数据
	lds R16,_ExtendRomAddr
	rcall _i2c_read
	mov R10,R16
	clr R11
	.dbline 60
; 
; 			pStr+=3;//回到指针尾部,因为数据先计算出个位数(需将数据转换为BCD码输出)
	subi R20,253  ; offset = 3
	sbci R21,255
	.dbline 61
; 			for(i=4;i!=0;i--)
	ldi R22,4
	rjmp L13
L10:
	.dbline 62
	.dbline 63
	ldi R18,10
	ldi R19,0
	movw R16,R10
	rcall mod16u
	movw R24,R16
	adiw R24,48
	movw R30,R20
	std z+0,R24
	.dbline 64
	ldi R18,10
	ldi R19,0
	movw R16,R10
	rcall div16u
	movw R10,R16
	.dbline 65
	subi R20,1
	sbci R21,0
	.dbline 66
L11:
	.dbline 61
	dec R22
L13:
	.dbline 61
	tst R22
	brne L10
	.dbline 67
; 			 {
; 				*pStr=intTemp%10+48;
; 				intTemp/=10;
; 				pStr--;
; 			 }
; 			pStr=strTemp;
	movw R20,R28
	.dbline 68
; 			puts(pStr);
	movw R16,R20
	rcall _puts
	.dbline 69
; 			ExtendRomRW&=0b11111101;
	lds R24,_ExtendRomRW
	andi R24,253
	sts _ExtendRomRW,R24
	.dbline 70
; 	 	 }
	rjmp L9
L8:
	.dbline 71
; 	 	else if(ExtendRomRW&0b00000100)
	lds R2,_ExtendRomRW
	sbrs R2,2
	rjmp L14
	.dbline 72
; 	 	 {
	.dbline 73
; 	 	 	i2c_write(ExtendRomVal,ExtendRomAddr);//写入外部EEPROM数据
	lds R18,_ExtendRomAddr
	lds R16,_ExtendRomVal
	rcall _i2c_write
	.dbline 74
; 	 	 	ExtendRomRW&=0b11111011;
	lds R24,_ExtendRomRW
	andi R24,251
	sts _ExtendRomRW,R24
	.dbline 75
; 	 	 }
L14:
L9:
	.dbline 77
L6:
	.dbline 54
	rjmp L5
X0:
	.dbline -2
L1:
	adiw R28,5
	.dbline 0 ; func end
	ret
	.dbsym l strTemp 0 A[5:5]c
	.dbsym r i 22 c
	.dbsym r intTemp 10 i
	.dbsym r pStr 20 pc
	.dbend
	.area bss(ram, con, rel)
	.dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
_ExtendRomVal::
	.blkb 1
	.dbsym e ExtendRomVal _ExtendRomVal c
_ExtendRomAddr::
	.blkb 1
	.dbsym e ExtendRomAddr _ExtendRomAddr c
	.area data(ram, con, rel)
	.dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
L4:
	.blkb 13
	.area idata
	.byte 202,253,190,221,210,209,190,173,208,180,200,235,0
	.area data(ram, con, rel)
	.dbfile G:\Mega8程序\TCXO评估板\Main\Main.c
L3:
	.blkb 27
	.area idata
	.byte 187,182,211,173,189,248,200,235,'T,'C,'X,'O,198,192,185,192
	.byte 176,229,181,247,202,212,179,204,208,242,0
	.area data(ram, con, rel)
	.dbfile G:\Mega8程序\TCXO评估板\Main\Main.c

⌨️ 快捷键说明

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