|
寫一個示例仿真給大家開開眼如何?
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
//sbit SDA = P1^1;
//sbit SHIFT_CP = P1^2;
sbit ST_CP = P3^2;
#define NOP _nop_()
uchar ledcode[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D, 0x7D,0x07, 0x7F, 0x6F};
uchar ledbitselect[] = {0x0fe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar i;
void InitSerialPort(void)
{
SCON=0X00;
}
unsigned char Convert(unsigned char In_Date)
{
unsigned char i, Out_Date = 0, temp = 0;
for(i=0; i<8; i++)
{
temp = (In_Date >> i) & 0x01;
Out_Date |= (temp << (7 - i));
}
return Out_Date;
}
void delay(void)
{
uchar jj;
for(jj=0;jj<200;jj++);
while(jj--);
}
void SerialSendData(uint dat)
{ uchar tmp,tmp1;
uint sdata=dat;
tmp=sdata>>8;
tmp1=Convert(tmp);
SBUF=tmp1;
while(!TI);
TI=0;
tmp=sdata;
tmp1=Convert(tmp);
SBUF=tmp1;
while(!TI);
TI=0;
ST_CP = 1;
NOP;
ST_CP = 0;
}
void main()
{
InitSerialPort();
while(1)
{uint tmp;
tmp=ledbitselect[i]<<8;
tmp=tmp|ledcode[i];//LED 共陰
SerialSendData(tmp);
//P2 =ledbitselect[i];
delay();
i=++i%8;
SerialSendData(0xffff);
//P2=0xff;
}
} |
|