c语言脉冲函数 怎么用c语言写一个脉冲

c语言如何中断函数控制脉冲

外部中断的常用功能

创新互联是一家专业提供曲阜企业网站建设,专注与成都网站制作、成都网站建设、H5响应式网站、小程序制作等业务。10年已为曲阜众多企业、政府机构等服务。创新互联专业网站制作公司优惠进行中。

外部中断经常用来记录外部脉冲的个数,也就是当我们使用外部中断1时,如果想记录自身单片机的某个引脚的下降沿个数,只需用杜邦线把这个引脚和P3.3连接即可。

比如P2.3引脚产生这样的电平无规律跳转,则下降沿的个数为茄悉雀5

所以我们就用外部中断1来实现记录K4按键从按下到松手的抖动过程中经历了多少个下降沿,把下降沿的个数显示在数码管上。

2.程序陆睁思路

我们定义一个16位的全局变量pulse用来记录P2.3下降沿的个数,在中断函数中的任务就是简单的pulse自加,因为引脚遇到下降沿就会进入中断函数。

在主函数里就是负责数码管显示即可。

3.代码#include 

#include //详见第六章第8讲

u16 pulse=0;

void main()

{

u16 x,PULSE_buf;

IT1 = 颤早1;   //下降沿触发模式

EX1 = 1;

EA  = 1;

LED_Init();//初始化LED硬件模块

KEY_Init();//初始化按键功能模块

ShowNumber(pulse);

while(1)

{

SEG_Scan();

if(PULSE_buf!=pulse)ShowNumber(pulse);//pulse不再是前一次的值,也就是pulse数值更新了,所以数码管缓存区也要更新pulse的数值以便显示出来

x++;

if(x=50)//隔一段时间过来记录此时的pulse数值

{

x=0;

PULSE_buf=pulse;

}

}

}

//请把P3.3和P2.3用杜邦线连接起来

void EXTI1_IRQHandler() interrupt 2

{

pulse++;

}

大家多按几次K4,发现按下后松手的一个动作里有时pulse就自加了几次,显示在数码管上的数加了好几下。

C语言里用什么语句实现脉冲?

随便你输入那一天都能算星期几

#include亩袭time.h

#includestdio.h

#includeconio.h

#includestddef.h

#define BIG 1

#define SMALL 2

void info()

{

textcolor(RED);

gotoxy(37,11);

puts("WEEKDAY");

}

int runyear(int year) /*判断是否为闰年*/

{

return !(year%4)year%100||!(year%400);

}

void main()

{

int year,month,day,yeardata,monthdata;

char *weekday;

time_t lt;

struct tm *ptr;

lt=time(NULL);

do

{

clrscr();

info();

gotoxy(18,15);

printf("Please Input The Year: ");

scanf("%d",year);

}while(year0||year9999);

yeardata=runyear(year);

do

{

clrscr();

info();

gotoxy(18,15);

printf("Please Input The Month:");

scanf("%d",month);

}while(month1||month12);

switch(month) /*大小月,2月*/

{

case 1:

case 3:

case 5:

case 7:

case 8:

case 10:

case 12: monthdata=BIG; break;

case 4:

case 6:

case 9:

case 11: monthdata=SMALL; break;

case 2: monthdata=3; break;

}

l1:

clrscr();

info();

gotoxy(18,15);

printf("Please Input The Day:");

scanf("%d",day);

if(monthdata==BIG)/*大月*/

{

if(day1||day31)

goto l1;

}

if(monthdata==SMALL)/*小月*/

{

if(day1||day汪中30)

goto l1;

}

if(yeardata==0monthdata==3)/*平年2月*/困耐山

{

if(day1||day28)

goto l1;

}

if(yeardata==1monthdata==3)/*闰年2月*/

{

if(day1||day29)

goto l1;

}

ptr=localtime(lt);

weekday=asctime(ptr);

ptr-tm_mday=day;

ptr-tm_mon=month;

ptr-tm_year=year;

weekday=asctime(ptr);

clrscr();

gotoxy(13,30);

puts(weekday);

}

怎样用C语言画出二阶系统单位脉冲响应函数的动态曲线

#include graphics.h#include conio.h int g_len; // Hilbert 曲线的单位长度 // 递归绘制 Hilbert 曲线void hilbert(LPCTSTR cmd, int level){ static BYTE d = 0; // 方向 static POINT c[4] = {1, 0, 0, -1, -1, 0, 0, 1}; // 方向对应的轴系数 if (level 0) return; // 处理命令字符串 int i = 0; while(cmd[i]) { switch(cmd[i++]) { case '+': d = (d + 1) 3; break; case '-': d = (d - 1) 3; break; case 'X': hilbert("+YF-XFX-FY+", level - 1); break; case 'Y': hilbert("-XF+YFY+FX-", level - 1); break; case 'F': linerel(c[d].x * g_len, c[d].y * g_len); break; } }} //蠢态 主函数void main(){ // 设置绘图环境 initgraph(800, 600); // 设置窗口大小 outtextxy(20, 550, "按 1~8 显示不同级别的 Hilbert 曲线,按 ESC 退出。"); rectangle(143, 23, 657, 537); // 绘制表示范围的矩形框 setorigin(144, 24); // 设置原点坐标 setcolor(RED); // 设置颜色 setfillstyle(BLACK); int level = '5'; // 设置初始级别 do { if (level = '1' level = '8') // 仅处理 1~8 { level -= '0'; // 转换为对应的数字值氏槐 bar(0, 0, 511, 511); // 清空绘图区 g_len = 512 level; // 计算单位长度 moveto(g_len / 2, 512 - g_len / 2); // 设定起点 hilbert("X", level); // 递归绘制 Hilbert 曲线 } } while( (level = getch()) != 27 ); /带核源/ 按 ESC 退出 closegraph();}


网站名称:c语言脉冲函数 怎么用c语言写一个脉冲
路径分享:http://cdiso.cn/article/ddpsjeg.html

其他资讯