|
單片機(jī)指針源程序如下:
- #include <reg52.h>
- bit cmdArrived = 0; //命令到達(dá)標(biāo)志,即接收到上位機(jī)下發(fā)的命令
- 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) //判斷是否接受到數(shù)據(jù)
- {
- cmdArrived = 0;
- switch(cmdIndex)
- {
- case 1:
- ptrTxd = array1;
- cntTxd = sizeof(array1); //sizeof(array1)=1,里面有幾個字節(jié),就等于多少,告訴我們要發(fā)送幾個
- 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; //計(jì)算T1重載值
- TL1 = TH1; //初值等于重載值
- ET1 = 0; //禁止T1中斷
- ES = 1; //使能串口中斷
- }
- void InterruptUART() interrupt 4
- {
- if (RI) //接受到字節(jié)
- {
- RI = 0; //清零接收中斷標(biāo)志位
- cmdIndex = SBUF;
- cmdArrived = 1;
- }
- if(TI) //字節(jié)發(fā)送完畢
- {
- TI = 0; //清零發(fā)送中斷標(biāo)志位
- if(cntTxd > 0)
- {
- SBUF = *ptrTxd;
- cntTxd--;
- ptrTxd++;
- }
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
指針.zip
(21.37 KB, 下載次數(shù): 15)
2019-3-9 13:02 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|