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

📄 main.c

📁 中颖单片机SH88F516例程
💻 C
字号:
/***************************************************************************************************************************************
说明: 串口1拥有独立的波特率发生器,不需要占用定时器资源,在多机通讯时还具有自动硬件地址识别和帧出错检测
功能。本程序代码可以很好的实现自动硬件地址识别和通讯功能,利用串口调试助手发送地址和数据命令,单片机接
收有效命令后,将数据再发送到串口调试助手。操作注意点如下:发送十六进制数据55(55在程序中定义为硬件地址),
选择偶校验(偶校验保证了输出第8位为1),发送后会返回十六进制数据55,说明地址匹配,下面可以任意发送数据
(除了FF和AA)进行通讯,发送的数据都可以返回到串口调试助手,十六进制FF(偶校验为1)为系统默认的广播命令,
十六进制AA为程序中定义的通讯结束命令,因而可以发送AA结束此次通讯。串口调试助手(serial V2.2.exe)在UART1文
件夹中。
要求:打开拨码开关J4,使串口1有效。
****************************************************************************************************************************************/
#include <sh88f516.h>

unsigned char data RCV_num;
bit flag1;
void init();
void SendChar(unsigned char value);

main()
{
	init();
					
    while(1)
	{	 
		if(flag1)
		{
			flag1 = 0;
			SendChar(RCV_num);
		}
	}

}


void init()
{

	CLKCON = 0x00;			//时钟设置 系统时钟=晶振频率   Fsys=16MHz

	SADDR1 = 0x55;          //多机通讯时的从机地址设置=0x55
	SADEN1 = 0xFF;  		//从机地址屏蔽设置

	SCON1 = 0xF0; 		    //工作在方式3 ,多机通讯模式
	SBRT1 = 0xFF;		    //工作在方式3时,BAUDRATE=(1/16)*Fsys/(32768-SBRT[1:0])	  Fsys=16MHz
	SBRT0 = 0x98;		    //BAUDRATE=9600时, SBRT[1:0]=0x7F98,   SBRT1.7=1	-->	SBRT1=0xFF,	 SBRT0 = 0x98;
	
	IEN1 = 0x04;		    //ES1=1,不可位寻址
	EA = 1;				    //开启总中断

}


void UART1_RCV_INT() interrupt 9  using 3  //串口接收中断的中断号为9.
{

	IEN1 &= 0xFB;						   //关闭串口1中断
	SCON1 &= 0xDF;						   //SM12_TXCOL = 0;

	RCV_num = SBUF1;


	if(RCV_num==0xAA)					   //收到0xAA就结束此次通讯
	{
		SCON1 |= 0x20;	                   //SM12_TXCOL = 1;
	}	
	
	flag1 = 1;

	RI1 = 0;							   //清除串口1中断标志位
	IEN1 |= 0x04;						   //打开串口1中断
}

void SendChar(unsigned char value)
{
	IEN1 &= 0xFB;               //ES1=0;		
	SBUF1=value;			    //写SBUF1,激活发送
	while(TI1==0);  			//等待转换结束
	TI1=0;						//清除发送标志位
	IEN1 |= 0x04;               //ES1=1;		
}



⌨️ 快捷键说明

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