指针示例程序1#include<reg52.h>
sbit ENLED=P1^1;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
void shiftleft(unsigned char *p);
void main()
{
unsigned int i=0;
unsigned char buf=0x01;
ENLED=0;
P20=0;
P21=1;
P22=1;
while(1)
{
P0 = ~buf;
for(i=0;i<50000;i++);
shiftleft(&buf);
if(buf==0)
{
buf=0x01;
}
}
};
void shiftleft(unsigned char *p)
{
*p=*p<<1;
}
指针示例程序2
#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);
while(1)
{
if(cmdArrived)
{
cmdArrived=0;
switch(cmdindex)
{
case 1:
ptrTxd=array1;
cntTxd=sizeof(array1);
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:
break;
}
}
}
}
void configUART(unsigned int baud)
{
SCON=0x50;
TMOD&=0x0F;
TMOD|=0x20;
TH1=255-(32768000/12/32)/baud;
TL1=TH1;
ET1=0;
TR1=1;
ES=1;
}
void interruptUART() interrupt 4
{
if(TI) //·¢Ëí
{
TI=0;
if(cntTxd>0)
{
SBUF=*ptrTxd;
ptrTxd++;
cntTxd--;
}
}
if(RI) //½óêü
{
RI=0;
cmdindex=SBUF;
cmdArrived=1;
}
}
|