|
楼主 |
发表于 2013-4-16 20:25:16
|
显示全部楼层
是求大家帮忙看看我的这个程序
#include <REGX52.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit csbout =P1^1; //超声波发送
sbit csbint1 =P3^2; //左耳超声波接收
sbit csbint2 =P3^3; //右耳超声波接收
sbit bj1 =P1^7; //左耳报警值输出(声音)
sbit bj2 =P1^6; //右耳报警值输出(声音)
uchar tab[10]={0xc0,0xf9,0xa4,0xb0, 0x99,0x92,0x82,0xf8,0x80,0x90};//0~9段码
sbit LED1 = P3^0; //数码管位驱动
sbit LED2 = P3^1; //数码管位驱动
sbit LED3 = P3^4; //数码管位驱动
sbit LED4= P3^5; //数码管位驱动
sbit LED5= P3^6; //数码管位驱动
sbit LED6 = P3^7; //数码管位驱动
uchar u1[3],u2[3];
uint count1,count2,b;
char outcome1H,outcome1L,outcome2H,outcome2L;
void delay(uint a) //延时;
{
uint m;
for(m=0;m<a;m++);
}
void csbfs() //从P1.1发出40KHz的脉冲
{
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=1;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
csbout=0;
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
_nop_(); /*40KHz超声波 */
}
void display1(void) //显示;
{
u1[0]=count1%10;
u1[1]=(count1/10)%10;
u1[2]=(count1/100)%10;
LED4=1;LED5=1;LED6=1;
P0=tab[u1[0]];
LED6=0;
delay(10);
LED6=1;
P0=tab[u1[1]];
LED5=0;
delay(10);
LED5=1;
P0=tab[u1[2]];
LED4=0;
delay(10);
LED4=1;
}
void display2(void) //显示;
{
u2[0]=count2%10;
u2[1]=(count2/10)%10;
u2[2]=(count2/100)%10;
LED1=1;LED2=1;LED3=1;
P2=tab[u2[0]];
LED3=0;
delay(10);
LED3=1;
P2=tab[u2[1]];
LED2=0;
delay(10);
LED2=1;
P2=tab[u2[2]];
LED1=0;
delay(10);
LED1=1;
}
void rcsbint1() interrupt 0 //外部中断0,接收信号
{
EX0=0;
TR0=0;
outcome1H=TH0;
outcome1L=TL0;
count1=outcome1L;
count1<<=8;
count1=count1|outcome1L;
count1=count1*34/2000;
TH0=0;
TL0=0;
}
void rcsbint2() interrupt 2// 外部中断1,接收信号
{
EX1=0;
TR1=0;
outcome2H=TH1;
outcome2L=TL1;
count2=outcome2H;
count2<<=8;
count2=count2|outcome2L;
count2=count2*34/2000;
TH1=0;
TL1=0;
}
void timer2(void) interrupt 5
{
display1();
display2();
}
/*void over()interrupt 1 //T0溢出为无效测量显示FFF;
{
u[0]=10;
u[1]=10;
u[2]=10;
display();
TR0=0;
}
*/
void main()
{
csbout=0;
TH0=0;
TL0=0;
TH1=0;
TL1=0;
TMOD=0x11;
EA=1;
bj1=1;
bj2=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
RCAP2H=(0xFFFF-500)/256;
RCAP2L=(0xFFFF-500)%256;
ET2=1;
TR2=1;
LED1=1;
LED2=1;
LED3=1;
LED4=1;
LED5=1;
LED6=1;
count1=0;
count2=0;
while(1)
{
csbfs();
TR0=1;
TR1=1;
EX0=1;
EX1=1;
delay(1000);
}
}
|
|