找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1023|回复: 0
打印 上一主题 下一主题
收起左侧

单片机与PC机通信

[复制链接]
跳转到指定楼层
楼主
ID:558173 发表于 2019-6-10 18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. #include<reg51.h>
  2. #include<intrins.h>
  3. unsigned char key_s,key_v,tmp;
  4. unsigned char display_code[]={0xC0,0xF9,0xA4,0xB0,0x99,0x82,0xF8,0x80,0x90};
  5. char code str[]="welcome!\n\r";/*定义向PC机发送的内容*/
  6. void send_str();/*声明发送字符串函数*/
  7. bit scan_key();/*声明按键函数*/
  8. void proc_key();/*声明按键处理函数*/
  9. void send_char(unsigned char td);/*声明发送字符函数*/
  10. void delayms(unsigned char ms);/*声明延时函数*/
  11. sbit K1=P1^4;
  12. void main()
  13. {
  14. TMOD=0x20;/*定时器1工作于8位自动重载模式,用于产生波特率 */
  15. TH1=0xFD; /*波特率9600*/
  16. TL1=0xFD;
  17. SCON=0x50;/*设定串行口工作方式*/
  18. PCON=0xef;/*波特率不倍增*/
  19. TR1=1;        /*启动定时器1*/
  20. IE=0x00;/*禁止任何中断*/
  21. while(1)
  22. {
  23.   if(scan_key())
  24.   delayms(10);         /*延时去抖动*/
  25.   if(scan_key())
  26.   {
  27.    key_v=key_s;
  28.    proc_key();
  29.   }
  30.   if(RI)   /*是否传来数据*/
  31.   {
  32.    RI=0;
  33.    tmp=SBUF;           /*暂存接受到的数据*/
  34.    delayms(10);
  35.    P0=display_code[tmp-0x30];  /*数据传送到PO口*/
  36.    send_char(tmp);         /*回传接受的数据*/
  37.   }
  38. }
  39. }
  40. bit scan_key() /*扫描按键*/
  41. {
  42. key_s=0x00;
  43. key_s|=K1;
  44. return(key_s^key_v);
  45. }
  46. void proc_key()         /*按键处理*/
  47. {
  48. if((key_v&0x01)==0)   /*k1按键按下*/
  49. {
  50.   send_str();        /*传送字符串*/
  51. }
  52. }
  53. void send_char(unsigned char td) /*传送一个字符*/
  54. {
  55. SBUF=td;
  56. while(!T1);   /*等待数据传送*/
  57. T1=0;                  /*清除数据传送标志*/
  58. }
  59. void send_str()         /*传送字符串*/
  60. {
  61. unsigned char i=0;
  62. while(str[i]!='\0')
  63. {
  64.   SBUF=str[i];
  65.   T1=0;          /*清除数据传送标志*/
  66.   i++;
  67. }
  68. }
  69. void delayms(unsigned char ms)         /*延时子程序*/
  70. {
  71. unsigned char j;
  72. while(ms--)
  73. {
  74.   for(j=0;j<120;j++);
  75. }
  76. }
复制代码


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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