全新论坛MCU智学网上线,欢迎访问新论坛!稀缺资源、技术干货、参考设计、原厂资料尽在MCU智学网
更新自动建库工具PCB Footprint Expert 2023.13 Pro / Library Expert 破解版

C51串口输出输入函数

[复制链接]
5178 3

本文包含原理图、PCB、源代码、封装库、中英文PDF等资源

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
  1. *----------------------------------------
  2. ComFun.c
  3. C51串口输出输入函数

  4. 外部声明 ComFun.h
  5. Copyright 2003 http://www.mcuzx.net
  6. All rights reserved.
  7. E-mail: admin@mcuzx.net
  8. ----------------------------------------*/
  9. #include <reg51.h>

  10. //串口初始化 晶振为11.0592M 方式1 波特率300-57600
  11. void InitCom(unsigned char BaudRate)
  12. {
  13. unsigned char THTL;
  14. switch (BaudRate)
  15. {
  16. case 1: THTL = 64; break; //波特率300
  17. case 2: THTL = 160; break; //600
  18. case 3: THTL = 208; break; //1200
  19. case 4: THTL = 232; break; //2400
  20. case 5: THTL = 244; break; //4800
  21. case 6: THTL = 250; break; //9600
  22. case 7: THTL = 253; break; //19200
  23. case 8: THTL = 255; break; //57600
  24. default: THTL = 208;
  25. }
  26. SCON = 0x50; //串口方式1,允许接收
  27. TMOD = 0x20; //定时器1定时方式2
  28. TCON = 0x40; //设定时器1开始计数
  29. TH1 = THTL;
  30. TL1 = THTL;
  31. PCON = 0x80; //波特率加倍控制,SMOD位
  32. RI = 0; //清收发标志
  33. TI = 0;
  34. TR1 = 1; //启动定时器
  35. }

  36. //向串口输出一个字符(非中断方式)
  37. void ComOutChar(unsigned char OutData)
  38. {
  39. SBUF = OutData; //输出字符
  40. while(!TI); //空语句判断字符是否发完
  41. TI = 0; //清TI
  42. }

  43. //向串口输出一个回车换行
  44. void ComOutEnter(void)
  45. {
  46. SBUF = 0x00;
  47. while(!TI);
  48. TI = 0;
  49. SBUF = 0x0A;
  50. while(!TI);
  51. TI = 0;
  52. }

  53. //向串口输出一个字符串(非中断方式)
  54. void ComOutStr(unsigned char *Str)
  55. {
  56. while(*Str != 0x00) //判断是否到了字符串的尾部
  57. {
  58. SBUF = *Str; //输出字符
  59. while(!TI); //空语句判断字符是否发完
  60. TI = 0; //清TI
  61. Str++; //字符串指针加一
  62. }
  63. }

  64. //从串口接收一个字符(非中断方式)
  65. unsigned char ComInChar()
  66. {
  67. unsigned char InData;
  68. while(!RI); //空语句判断字符是否收完
  69. InData = SBUF; //保存COM缓冲字符
  70. RI = 0; //清RI
  71. return (InData); //返回收到的字符
  72. }

  73. //从串口接收一个定长字符串(非中断方式,只用于字符需有一个的idata字符串数组)
  74. //如unsigned char *Str;
  75. //unsigned char i[]="abcd";
  76. //InHandStr = &i;
  77. void ComInStr(unsigned char *Str)
  78. {
  79. while(*Str != 0x00) //判断是否到了字符串的尾部
  80. {
  81. while(!RI); //空语句判断字符是否收完
  82. *Str = SBUF; //保存字符
  83. RI = 0; //清RI
  84. Str++; //字符串指针加一
  85. }
  86. }


复制代码

举报

回复

3 个评论

éò***  新手上路  发表于 2012-3-28 10:58:11  | 显示全部楼层
好多这样的。。
st***  新手上路  发表于 2012-3-7 00:43:02  | 显示全部楼层
学习学些!
黄***  新手上路  发表于 2012-8-4 02:19:38  | 显示全部楼层
做个类似的,不错
*滑块验证:
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

打开支付宝扫一扫,最高立得1212元红包
搜索

图文热点

更多

社区学堂

更多

客服中心

QQ:187196467 服务时间:周一至周日 8:30-20:30

关注我们

关于我们
关于我们
友情链接
联系我们
帮助中心
网友中心
购买须知
支付方式
服务支持
资源下载
售后服务
定制流程
关注我们
官方微博
官方空间
官方微信
快速回复 返回顶部 返回列表