这里以串口1为例。
一、用STC-ISP生成 生成串口初始化寄存器代码,点击下面的复制代码,复制到main.c文件中。
二、在STC-ISP找到范例程序,要复制3个方法
(1)中断服务程序 (2)发送字符串 (3)发送串口数据
/*----------------------------
(1)UART 中断服务程序
-----------------------------*/
void Uart() interrupt 4 using 1
{
if (RI)
{
RI = 0; //清除RI位
P0 = SBUF; //P0显示串口数据
P22 = RB8; //P2.2显示校验位
}
if (TI)
{
TI = 0; //清除TI位
busy = 0; //清忙标志
}
}
/*----------------------------
(2)发送串口数据
----------------------------*/
void SendData(BYTE dat)
{
while (busy); //等待前面的数据发送完成
ACC = dat; //获取校验位P (PSW.0)
if (P) //根据P来设置校验位
{
#if (PARITYBIT == ODD_PARITY)
TB8 = 0; //设置校验位为0
#elif (PARITYBIT == EVEN_PARITY)
TB8 = 1; //设置校验位为1
#endif
}
else
{
#if (PARITYBIT == ODD_PARITY)
TB8 = 1; //设置校验位为1
#elif (PARITYBIT == EVEN_PARITY)
TB8 = 0; //设置校验位为0
#endif
}
busy = 1;
SBUF = ACC; //写数据到UART数据寄存器
}
/*----------------------------
(2)发送字符串
----------------------------*/
void SendString(char *s)
{
while (*s) //检测字符串结束标志
{
SendData(*s++); //发送当前字符
}
}
三、复制以上方法中用到的全局变量(没有复制会编译通不过的),
四、复制选择串口的引脚位置用于切换引脚的。这里选择串口1的P3.0 和P3.1 (),注意:这里引脚一定要记得改成一至的,要不然可能通调不通。
五、代码复制完成后,将当前的串口、总中断都要打开(不知道可以在范例中复制过来)。
六、修改校验位,这里设置接收为无校验位,发送要跟接收匹配,发送
七、完成后检查编译就可以了。
八、测试串口发送数据,使用STC-ISP下载完成后,对串口1(P3.0/RD , P3.1/TD)接收和送数据,这里只做发送数据到上位机测试,发送也一样的,自己测试。
(KEIL工程文件)百度网:https://pan.baidu.com/s/162NGvIRJJsRoNaIYTu0WLw
提取码: t5qj