我的目的是通过P1^0引脚读取外部给的低电平次数 然后根据低电平次数去执行一些指令 比如另LED等闪烁 但是写到片子里接上高电平LED灯也不停闪烁 谢谢。。。
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char //头文件包含特殊功能寄存器的定义
sbit LED=P1^0;// 用sbit 关键字 定义 LED到P1.0端口,
sbit REC=P0^1; //REC是自己任意定义且容易记忆的符号, 接收置零。
void delay25ms(void); //误差 0us
void delay100ms(void);
void delay500ms(void);
void cont(int); //相应控制指令
unsigned int N;
int scan_REC(); //接收置零次数。
unsigned int key;
void delay50ms(void); //误差 -0.000000000011us
void main()
{
while(1)
{ int m=1,n=0;
REC = 1;
while (!REC)
{
for( ;m<2;m++)
{
delay25ms( );
}
n++;
delay100ms();
switch( n )
{case 1: LED=0;delay500ms();LED=1;break;
case 2: LED=0;delay500ms();LED=1;delay500ms();LED=0;delay500ms();LED=1;break;
default:;
}
}
}
}
void delay500ms(void) //误差 -0.000000000114us
{
unsigned char a,b,c;
for(c=98;c>0;c--)
for(b=127;b>0;b--)
for(a=17;a>0;a--);
_nop_(); //if Keil,require use intrins.h
}
void delay100ms(void) //误差 -0.000000000023us
{
unsigned char a,b;
for(b=221;b>0;b--)
for(a=207;a>0;a--);
}
void delay25ms(void) //误差 -0.000000000006us
{
unsigned char a,b,c;
for(c=3;c>0;c--)
for(b=76;b>0;b--)
for(a=49;a>0;a--);
}
void delay50ms(void) //误差 -0.000000000011us
{
unsigned char a,b,c;
for(c=3;c>0;c--)
for(b=44;b>0;b--)
for(a=173;a>0;a--);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
看不懂你想表达的意思!
{
delay25ms( );
}
你这个是用来干嘛的,看不懂,如果有用的话,二楼正解
还有 你的switch()语句好像要放到while(!REC)外面去,你的n是用来干什么的,如果是用来计低电平的次数的,那么switch()中case就不是才2中情况了。
一周热门 更多>