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

📄 main.c

📁 详细介绍M8两版间通讯
💻 C
字号:
#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)
 {
 	unsigned int intTemp;
 	unsigned char strTemp[5]={0},i;
 	unsigned char *pStr=strTemp;
	OSCCAL=0x8e;//内部振荡器校正字,需要使用Ponygrog测试
	//TCXO评估板上的TQFP上为0x8e,而DIP28的为0xa5
	uart_init();//初始化USRART
	puts("欢迎进入TCXO评估板调试程序");
	timer0_init();//初始化定时器
	pwm1_init();//初始化PWM输出
	adc_init();//初始化ADC
	int_init();//int0,int1中断使能
	TWI_init();
	SEI();//开放全局中断
	OCR1A=655;//0.8v
	OCR1B=2459;//3v

	i2c_write(0x12,0x11);//写入外部EEPROM数据
	puts("数据已经写入");
	
	/******************从机的数据发送尚未完成*************************************
	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)
	 {
	 	if(ExtendRomRW&0b00000010)
	 	 {
			intTemp=(int)i2c_read(ExtendRomAddr);//读取外部EEPROM数据

			pStr+=3;//回到指针尾部,因为数据先计算出个位数(需将数据转换为BCD码输出)
			for(i=4;i!=0;i--)
			 {
				*pStr=intTemp%10+48;
				intTemp/=10;
				pStr--;
			 }
			pStr=strTemp;
			puts(pStr);
			ExtendRomRW&=0b11111101;
	 	 }
	 	else if(ExtendRomRW&0b00000100)
	 	 {
	 	 	i2c_write(ExtendRomVal,ExtendRomAddr);//写入外部EEPROM数据
	 	 	ExtendRomRW&=0b11111011;
	 	 }

	 }
 }

⌨️ 快捷键说明

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