找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1829|回复: 2
收起左侧

单片机指针学习代码

[复制链接]
ID:421049 发表于 2019-3-9 13:02 | 显示全部楼层 |阅读模式
单片机指针源程序如下:
  1. #include <reg52.h>

  2. bit cmdArrived = 0;                 //命令到达标志,即接收到上位机下发的命令
  3. unsigned char cmdIndex = 0;
  4. unsigned char *ptrTxd;
  5. unsigned char cntTxd = 0;

  6. unsigned char array1[1] = {1};
  7. unsigned char array2[2] = {1,2};
  8. unsigned char array3[4] = {1,2,3,4};
  9. unsigned char array4[8] = {1,2,3,4,5,6,7,8};
  10. void ConfigUART(unsigned int baud);

  11. void main()
  12. {
  13.   EA = 1;
  14.         ConfigUART(9600);     //配置波特率为9600
  15.        
  16.         while(1)
  17.         {
  18.           if(cmdArrived)      //判断是否接受到数据
  19.                 {
  20.                   cmdArrived = 0;
  21.                         switch(cmdIndex)
  22.                         {
  23.                           case 1:
  24.                                           ptrTxd = array1;
  25.                                     cntTxd = sizeof(array1);   //sizeof(array1)=1,里面有几个字节,就等于多少,告诉我们要发送几个
  26.                                     TI = 1;
  27.                                     break;
  28.                                 case 2:
  29.                                           ptrTxd = array2;
  30.                                     cntTxd = sizeof(array2);  
  31.                                     TI = 1;
  32.                                     break;
  33.                                 case 3:
  34.                                           ptrTxd = array3;
  35.                                     cntTxd = sizeof(array3);  
  36.                                     TI = 1;
  37.                                     break;
  38.                                 case 4:
  39.                                           ptrTxd = array4;
  40.                                     cntTxd = sizeof(array4);  
  41.                                     TI = 1;
  42.                                     break;
  43.                                 default:                     //如果所含向没有包含一切,则必须加default
  44.                                           break;
  45.                         }
  46.                 }
  47.         }
  48. }
  49. void ConfigUART(unsigned int baud)
  50. {
  51.   SCON  = 0X50;        //配置串口为模式1
  52.         TMOD &= 0x0F;        //清零T1的控制位
  53.         TMOD |= 0x20;        //配置T1为模式2
  54.         TH1 = 256 - (11059200/12/32)/baud;      //计算T1重载值
  55.         TL1 = TH1;           //初值等于重载值
  56.         ET1 = 0;             //禁止T1中断
  57.         ES  = 1;             //使能串口中断
  58. }
  59. void InterruptUART() interrupt 4
  60. {
  61.   if (RI)                //接受到字节
  62.   {
  63.           RI = 0;              //清零接收中断标志位
  64.                 cmdIndex = SBUF;
  65.                 cmdArrived = 1;       
  66.         }               
  67.         if(TI)                 //字节发送完毕
  68.         {
  69.           TI = 0;              //清零发送中断标志位
  70.                 if(cntTxd > 0)
  71.                 {
  72.                   SBUF = *ptrTxd;
  73.                         cntTxd--;
  74.                         ptrTxd++;
  75.                 }                  
  76.         }
  77. }
复制代码

所有资料51hei提供下载:
指针.zip (21.37 KB, 下载次数: 15)
回复

使用道具 举报

ID:128463 发表于 2019-4-11 11:42 | 显示全部楼层
谢谢,分享,学习了
回复

使用道具 举报

ID:690948 发表于 2020-2-13 08:02 来自手机 | 显示全部楼层
感谢分享,学习了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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