單片機指針源程序如下:
- #include <reg52.h>
- bit cmdArrived = 0; //命令到達標志,即接收到上位機下發的命令
- unsigned char cmdIndex = 0;
- unsigned char *ptrTxd;
- unsigned char cntTxd = 0;
- unsigned char array1[1] = {1};
- unsigned char array2[2] = {1,2};
- unsigned char array3[4] = {1,2,3,4};
- unsigned char array4[8] = {1,2,3,4,5,6,7,8};
- void ConfigUART(unsigned int baud);
- void main()
- {
- EA = 1;
- ConfigUART(9600); //配置波特率為9600
-
- while(1)
- {
- if(cmdArrived) //判斷是否接受到數據
- {
- cmdArrived = 0;
- switch(cmdIndex)
- {
- case 1:
- ptrTxd = array1;
- cntTxd = sizeof(array1); //sizeof(array1)=1,里面有幾個字節,就等于多少,告訴我們要發送幾個
- TI = 1;
- break;
- case 2:
- ptrTxd = array2;
- cntTxd = sizeof(array2);
- TI = 1;
- break;
- case 3:
- ptrTxd = array3;
- cntTxd = sizeof(array3);
- TI = 1;
- break;
- case 4:
- ptrTxd = array4;
- cntTxd = sizeof(array4);
- TI = 1;
- break;
- default: //如果所含向沒有包含一切,則必須加default
- break;
- }
- }
- }
- }
- void ConfigUART(unsigned int baud)
- {
- SCON = 0X50; //配置串口為模式1
- TMOD &= 0x0F; //清零T1的控制位
- TMOD |= 0x20; //配置T1為模式2
- TH1 = 256 - (11059200/12/32)/baud; //計算T1重載值
- TL1 = TH1; //初值等于重載值
- ET1 = 0; //禁止T1中斷
- ES = 1; //使能串口中斷
- }
- void InterruptUART() interrupt 4
- {
- if (RI) //接受到字節
- {
- RI = 0; //清零接收中斷標志位
- cmdIndex = SBUF;
- cmdArrived = 1;
- }
- if(TI) //字節發送完畢
- {
- TI = 0; //清零發送中斷標志位
- if(cntTxd > 0)
- {
- SBUF = *ptrTxd;
- cntTxd--;
- ptrTxd++;
- }
- }
- }
復制代碼
所有資料51hei提供下載:
指針.zip
(21.37 KB, 下載次數: 15)
2019-3-9 13:02 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|