51单片机C语言编程 如果我想完成以下要求,该如何编程:
首先P0^0,P0^1两个端口可以接收信号,输入信号为高低电平,P1^0负责输出信号当P0^0接收到信号时,每接收a个高电平,P1^0输出一组方波,为c个脉冲;当P0^1...
首先P0^0,P0^1两个端口可以接收信号,输入信号为高低电平,P1^0负责输出信号
当P0^0接收到信号时,每接收a个高电平,P1^0输出一组方波,为c个脉冲;
当P0^1接收到信号时,每接收b个高电平,P1^0输出一组方波,为c个脉冲。
方波的频率可以先不考虑,a,b,c均为常数,求程序 展开
当P0^0接收到信号时,每接收a个高电平,P1^0输出一组方波,为c个脉冲;
当P0^1接收到信号时,每接收b个高电平,P1^0输出一组方波,为c个脉冲。
方波的频率可以先不考虑,a,b,c均为常数,求程序 展开
5个回答
展开全部
当P0^0接收到信号时,每接收a个高电平,P1^0输出一组方波,为c个脉冲;
当P0^1接收到信号时,每接收b个高电平,P1^0输出一组方波,为c个脉冲。
方波的频率可以先不考虑,a,b,c均为常数
#include <reg51.h>
sbit P0^0 = P00;
sbit P0^1 = P01;
sbit P1^0 = P10;
void P10_OUT(void)
{
char c = 20;
while(c) {
P10 = 0; DELAY();
P10 = 1; DELAY();
c--;
}
}
void main(void)
{
char a = 0, b = 0;
bit P00H = 0, P01H = 0;
while(1) {
//下面检测 P00
if (P00) P00H = 1; //信号是高电平, 就记录下来
else { //信号是低电平
if (P00H) { //如果上次是高电平,
a++; //这就是收到了一个信号
if(a == 100) { //到了100 ?
P10_OUT();//就输出
a = 0;
}
}
P00H = 0;
} //上面的,实际上是检测 P00 输入下降沿的个数
//下面检测 P01
//和上面的程序,雷同,略。
// …………
}
}
当P0^1接收到信号时,每接收b个高电平,P1^0输出一组方波,为c个脉冲。
方波的频率可以先不考虑,a,b,c均为常数
#include <reg51.h>
sbit P0^0 = P00;
sbit P0^1 = P01;
sbit P1^0 = P10;
void P10_OUT(void)
{
char c = 20;
while(c) {
P10 = 0; DELAY();
P10 = 1; DELAY();
c--;
}
}
void main(void)
{
char a = 0, b = 0;
bit P00H = 0, P01H = 0;
while(1) {
//下面检测 P00
if (P00) P00H = 1; //信号是高电平, 就记录下来
else { //信号是低电平
if (P00H) { //如果上次是高电平,
a++; //这就是收到了一个信号
if(a == 100) { //到了100 ?
P10_OUT();//就输出
a = 0;
}
}
P00H = 0;
} //上面的,实际上是检测 P00 输入下降沿的个数
//下面检测 P01
//和上面的程序,雷同,略。
// …………
}
}
展开全部
输出一组方波:
pause=0;
for(i=0;i<c;i++)
{
pause=1;
i=i;
pause=0;
i=i;
}
pause=0;
for(i=0;i<c;i++)
{
pause=1;
i=i;
pause=0;
i=i;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
#include <reg51.h>
sbit P0^0 = P00;
sbit P0^1 = P01;
sbit P1^0 = P10;
void Signscan()
{
if(P00 == 1)
{
delayms(50);
if(P00 == 1)
i++;//计数高电平
while(P00 != 1)
}
}
void main()
{
while(1)
{
if(i == a)
OutPut();
else if(i == b);
OutPut();
}
}
只有计数a的高电平,大概思路这样,楼主自己完善一下吧
#include <reg51.h>
sbit P0^0 = P00;
sbit P0^1 = P01;
sbit P1^0 = P10;
void Signscan()
{
if(P00 == 1)
{
delayms(50);
if(P00 == 1)
i++;//计数高电平
while(P00 != 1)
}
}
void main()
{
while(1)
{
if(i == a)
OutPut();
else if(i == b);
OutPut();
}
}
只有计数a的高电平,大概思路这样,楼主自己完善一下吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输出方波:
暂停= 0;
为(i = 0;我<C + +)
{
暂停= 1; BR />
I = I;
暂停= 0;
I = I;
}
暂停= 0;
为(i = 0;我<C + +)
{
暂停= 1; BR />
I = I;
暂停= 0;
I = I;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询