单片机常用函数整理(一)

 1 void ComDataSendStr(const unsigned char str[])
 2 {
 3     unsigned char i = 0;
 4     for (i = 0; str[i] != '\0'; i++)
 5     {
 6         TXREG = str[i];
 7         TXEN = 1;
 8         while(!TRMT);
 9         TXEN = 0;
10     }
11 }
1 void ComDataSendChar(unsigned char cDbuf)
2 {
3     TXREG = cDbuf;
4     TXEN = 1;
5     while(!TRMT);
6     TXEN = 0;
7 }

PIC单片机中发送字符和字符串的函数功能。

 1 void ComDataSendNumInt_3bits(unsigned int str)
 2 {
 3     unsigned char cDbuf[3];
 4     unsigned char i;
 5 
 6     cDbuf[0] = str / 100 + 0x30;
 7     cDbuf[1] = str % 100 / 10 + 0x30;
 8     cDbuf[2] = str % 10 + 0x30;
 9 
10     for (i = 0; i < 3; i++)
11     {
12         TXREG = cDbuf[i];
13         TXEN = 1;
14         while(!TRMT);
15         TXEN = 0;
16     }
17 }

上面是发送时整形数字的函数

 1 void ComDataSendNumfloat(unsigned int str)
 2 {
 3     unsigned char cDbuf[4];
 4     unsigned char i;
 5 
 6     cDbuf[0] = str / 100 + 0x30;
 7     cDbuf[1] = '.';
 8     cDbuf[2] = str % 100 / 10 + 0x30;
 9     cDbuf[3] = str % 10 + 0x30;
10 
11     for (i = 0; i < 4; i++)
12     {
13         TXREG = cDbuf[i];
14         TXEN = 1;
15         while(!TRMT);
16         TXEN = 0;
17     }
18 }

应该是扩大100倍后的数字,发送浮点函数功能。

下面的函数是采样并滤波的函数。去max、min后求平均

 1 unsigned int sample_10bit(unsigned char channel_register)
 2 {
 3     unsigned char i=0;
 4     int sample_variable[10],min=0,max=0,SUM=0;
 5     while(i<10)
 6     {
 7         ADCON0=channel_register;
 8         ADFM=1;
 9         delay30us();
10         ADGO=1;
11         while(ADGO==1)
12         {
13             ;
14         }
15         sample_variable[i]=((ADRESH&0x03)<<8)+ADRESL;
16         if(i==0)
17         {
18             min=sample_variable[0];
19             max=sample_variable[0];
20             SUM=sample_variable[0];
21         }
22         else
23         {
24             min=(sample_variable[i]<min ?sample_variable[i]:min);
25             max=(sample_variable[i]>max ?sample_variable[i]:max);
26             SUM=SUM+sample_variable[i];
27         }
28         ADFM=0;
29         i++;
30     }
31     return (SUM-max-min)/8;
32 }

以上是pic16F787中用到的函数,特此整理。

猜你喜欢

转载自www.cnblogs.com/CodeWorkerLiMing/p/10633187.html