找回密码
 注册会员
img_loading
智能检测中
更新自动建库工具PCB Footprint Expert 2024.04 Pro / Library Expert 破解版

C51串口输出输入函数

[复制链接]
admin 发表于 2010-5-15 00:26:58 | 显示全部楼层 |阅读模式

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

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

×
  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. }


复制代码
éò¢梨£| 发表于 2012-3-28 10:58:11 | 显示全部楼层
好多这样的。。
stcc1 发表于 2012-3-7 00:43:02 | 显示全部楼层
学习学些!
黄鼠狼 发表于 2012-8-4 02:19:38 | 显示全部楼层
做个类似的,不错
您需要登录后才可以回帖 登录 | 注册会员

*滑块验证:
loading...
logo
验证成功
验证未通过
加载失败,请点击重试
本版积分规则

QQ|手机版|MCU资讯论坛 ( 京ICP备18035221号-2 )|网站地图

GMT+8, 2025-6-6 17:16 , Processed in 0.091926 second(s), 10 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表