- #include<REG52.h>
-
#include<intrins.h>
-
-
#define uchar unsigned char
-
#define uint unsigned int
-
-
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
-
uchar LED_Buffer[8] = {0}; //從串口接收的數(shù)據(jù)
-
void Delay_1ms(uint i)//1ms延時(shí)
-
{
-
uchar x,j;
-
for(j=0;j<i;j++)
-
for(x=0;x<=148;x++);
-
}
-
void Com_Int(void) interrupt 4
-
{
-
static uchar i = 0; //定義為靜態(tài)變量,當(dāng)重新進(jìn)入這個(gè)子函數(shù)時(shí) i 的值不會(huì)發(fā)生改變
-
if(RI == 1) //當(dāng)硬件接收到一個(gè)數(shù)據(jù)時(shí),RI會(huì)置位
-
{
-
LED_Buffer[i] = SBUF - 48; //這里減去48是因?yàn)閺碾娔X中發(fā)送過來的數(shù)據(jù)是ASCII碼。
-
RI = 0;
-
if(i==8)
-
{
-
i = 0;
-
}
-
i++;
-
}
-
}
-
-
void Com_Init(void)
-
{
-
TMOD = 0x20;
-
PCON = 0x00;
-
SCON = 0x50;
-
TH1 = 0xfd; //設(shè)置波特率 9600
-
TL1 = 0xfd;
-
TR1 = 1; //啟動(dòng)定時(shí)器1
-
ES = 1; //開串口中斷
-
EA = 1; //開總中斷
-
}
-
-
void Main()
-
{
-
uchar i = 0;
-
Delay_1ms(100);
-
Com_Init();
-
while(1)
-
{
-
P0 = table[LED_Buffer[i]];
-
P2 = i++;
-
Delay_1ms(1);
-
if(i == 8) i=0;
-
}
-
}
說明:
可以再串口RI或者TI置位后,設(shè)置中斷函數(shù),TI和RI由硬件。通過RI置位可以讀取接受到的數(shù)組。
然后做進(jìn)一步的傳輸。