A. 请按照如下下降沿/上升沿触发时序图写一段c语言程序
电子的课程我几乎全忘了,我翻了翻书,我当初学51单片机串口通信,用的是汇编。
我当初用C语言写51单片机代码的时候,编译变成机器代码,但是keil编辑器可以把机器代码转成助记符,就是汇编。我看了之后发现一条C语言代码会翻译成多条汇编,如果是循环,翻译成汇编就会更复杂,所以用C语言写51单片机代码,代码运行时间会更长,时间不能自己掌握,因为我不知道翻译成多少条汇编了。所以51单片机还是要用汇编写比较好。
我也不知道为什么你会直接用C语言写时序图,我只是觉得用汇编会简单点。
B. 51单片机中,测两个上升沿(外部信号)之间的时间差c程序应该则样写。
看您的问题好像是硬件已经设计好了,而且待测I/O不是接在尘唤同一个口上而且不是外部中断口?那就只能用查询方式了,不断的查询口状态,只要有变化(上升穗罩沿是0变1,反之下降沿)就打开定时器,再次变化关闭定时器,读数据就行了,这样应该会有误差,但是比较小而且固定,看你的需要自己处理。 比如你要查询P10和P11两个脚上的上升沿时间差,假设P10先来,且猜兄闹正常情况下都是低电平。
void main()
{
unsigned int a;
init();//各种初始化,自己写。P10 P11要SBIT下。
while(!P10);//低电平的时候死循环,变高就说明上升沿来到,接着往下运行
startTimer0();//打开定时器,初始化和子函数自己写。
while(!P11);//如法炮制
stopTimer0();//停止定时器。
a=getTimer0();//读数,自己写。
.......//其他代码。
}
我就是这么写写,给你提供参考,具体我肯定没试过,而且这程序也不是特别实用。有错误自己改一下吧。这东西你要想学好就自己想。
C. 如何写一个单片机输入上升沿和下降沿的脉冲输出信号的c语言程序
这个简单,从低到高就是上升输出,重高到低就是下降输出
#include<reg51.h>
sbit pluse=P1^0;
main()
{
int i;
while(1)
{
pluse=0; //此时为下降输出
i=100;
while(i--);
pluse=1; //此时为上升输出
i=100;
while(i--);
}
}
D. 上升沿和下降沿结合c语言怎么编写程序呀!随便举个例子就可以的!
设置一个变量为标志
比如flag=0
当flag=1的时候就是上升沿了
E. C语言做上升沿怎么做
这有何难:
int f(int t) { return t>0?1:0; }
就形成一个阶梯函数,0时刻开始为1,之前为0;
int p(int t) { return t==0?1:0; }
就形成一个脉冲函数,0时刻为1,其他时刻为0;
F. c语言怎么编写单片机的中断
标准c语言没有中断调用机制,但是不同编译器都有相应的中断处理方式,可以使用户实现中断功能。
解决方案:
1、采取轮询的方式解决,就是每10毫秒检查一下是否有键盘请求,总的来说,这样基本上可以解决问题,而且简单易行,但每10毫秒都要检查,系统消耗太大。
2、采取中断的方式:
(1)用高级语言调用中断来处理问题。中断是cpu响应一个中断外围设备8259A的一个过程,当键盘敲击,cpu保存断点暂停执行并且跳到相应的中断处理程序继续执行,结束后根据断点再跳回来。通过这种方式可以轻松+愉快地解决这个问题。但是需要用到高级语言调用汇编,根据编译器的不同而有所差别。
(2)自己模拟中断。可以另外建立一个线程专门响应键盘的敲击,如果有敲击则打断主线程。这样做实现起来很复杂,而且涉及到不少复杂的关键技术,比如信号量之类的东西。
3、强大的vc
vc采取了消息映射的机制来处理外部设备的请求,比如时钟中断、键盘中断等等。通过此可以灰常灰常容易的处理外部中断。
G. 单片机中一个I/O信号的上升沿或下降沿在单片机中C语言怎么写,不用中断
不用中断只能用查询了。
你只能写一个while循环,然后时刻判断IO电平。
上一次循环是低电平,下次变成高电平了,就可以判断来了一个上升沿。
注意信号上升时间和你的单片机时钟周期的关系,也就是说,信号上升沿要小于你查询两次所用的时间。如果信号你不能改变,那么你就需要纪录多次查询的结果,这样能识别比较慢的沿。
H. 单片机C语言怎么判断上升沿触发
用一个外部中断,把B=B+1写在中断处理函数中就行了。
I. 求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。
这里只讲原理,不关注速度。实际设计工作中,已经有很多单片机能够识别io端口上升沿和下降沿中断,且方式不止一种。
sbit io_inp=P2^1;输入端
bit old_bit;输入端电平记忆
unsigned char low_high;上升下降沿标志,0=无变化,1=上升沿,2、下降沿
void io_rest(void)
{
if(old_bit=!io_inp)
{
old_bit=io_inp;
if(io_inp=1)
low_high=1;
else
low_high=2;
}
}
void main(void)
{
old_bit=io_inp=P2^1;
while(1)
{
low_high=0;
io_rest(void);
//在此应用
}
}