串口1选择定时器2产生波特率

串口1相关寄存器

1.选择串口1所放的管脚

2.串口1配置步骤

3.选择串口工作模式

4.确定定时器2工作速度

代码配置

void Uart1_Tim2_Config(int Baud)
{
//P3.6, P3.7准双向模式
P3M0 &= ~(0x03<<6);
P3M1 &= ~(0x03<<6); //S1_S0=1 S1_S1=0 RxD_2,TxD_2
ACC = P_SW1;
ACC = ACC&0x3F|(0x01<<6);
P_SW1 = ACC; //方式1,并允许串口接收中断
SCON = 0x50; //设置波特率
T2L = (65536 - FOSC/4/Baud);
T2H = (65536 - FOSC/4/Baud) >> 8; AUXR = 0x15; //T2为1T模式, 选择定时器2作为波特率发生器并启动
ES = 1; //使能串口1中断
} /*----------------------------
UART 中断服务程序
-----------------------------*/
void Uart() interrupt 4
{
if (RI)
{
RI = 0; //清除RI位
Uart_Recv_Buf[Uart_Recv_Cnt] = SBUF; //P0显示串口数据
if(Uart_Recv_Buf[Uart_Recv_Cnt++] == '\n')
{
Uart_Recv_Flag = 1;
Uart_Recv_Cnt = 0;
}
}
if (TI)
{
TI = 0; //清除TI位
Uart_Busy = 0; //清忙标志
}
} /*----------------------------
发送串口数据
----------------------------*/
void SendData(unsigned char dat)
{
while (Uart_Busy); //等待前面的数据发送完成
ACC = dat; //获取校验位P (PSW.0) Uart_Busy = 1;
SBUF = ACC; //写数据到UART数据寄存器
} /*----------------------------
发送字符串
----------------------------*/
void SendString(char *s)
{
while (*s) //检测字符串结束标志
{
SendData(*s++); //发送当前字符
}
}

最新文章

  1. iOS之There was an internal API error错误
  2. iOS 疑难杂症 — — UIButton 点击卡顿/延迟
  3. 初学mongodb笔记
  4. WCF 套接字连接已中止。这可能是由于处理消息时出错或远程主机超过接收超时或者潜在的网络资源问题导致的
  5. .net c# 视频剪切抓取缩略图
  6. java课后作业6
  7. 软件测试面试(2)LR篇
  8. vpn与局域网冲突解决方案
  9. Housse Robber II | leetcode
  10. C#程序将对象保存为json文件的方法
  11. 矩阵链乘 hrbust 1600
  12. android FragmentPagerAdapter的“标准”配置
  13. 【转】使用ThinkPHP必须掌握的调试方法
  14. 吞吐量(TPS)、QPS、并发数、响应时间(RT)概念
  15. 安装phpnow服务[Apache_pn]提示失败的解决方法
  16. 使用 whistle 替代本地 nginx/webpack 服务
  17. 【RL-TCPnet网络教程】第28章 RL-TCPnet之DNS应用
  18. TLS / SSL密码强化的建议
  19. saltstack 入门
  20. [二叉树建树]1119. Pre- and Post-order Traversals (30) (前序和后序遍历建立二叉树)

热门文章

  1. 隐私计算FATE-模型训练
  2. 一文get到SOLID原则的重点
  3. 关于个人全栈项目【臻美Chat】遇到的BUG以及解决方法
  4. SAP BOM 笔记(本文仅作笔记使用,非原创)
  5. jieba分词的功能和性能分析
  6. 用python随随便便做一个二维码叭~~~
  7. Throwable类中3个异常处理的方法和finally代码块
  8. 博客从 CloudBase 迁移至云主机
  9. 基础算法学习以及$STL$的使用
  10. 你有没有想过用电子表格也能做MES、WMS、SRM和MRP