扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
代码如下所示,
创新互联公司从2013年创立,先为甘井子等服务建站,甘井子等地企业,进行企业商务咨询服务。为甘井子企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。
#include
#include
#include
int main()
{
double x, y; // 定义函数的自变量、因变量,考虑到可能有小数的情况,设置数值类型为double型
int getBuff; // 用于最后清空输入缓冲区残留,了解即可
printf("请输入自变量x的值(一个数字):\n");
scanf("%lf",x); // 输入自变量的一个值
if(x-2)
y = 7-2*x;
else if(x=-2 x3)
y = 5 - fabs(3*x+2); // 注意,对浮点型数值取绝对值,要用fabs()函数
else
y = 3*x+4;
printf("自变量x为%lf时,对应的函数值y是:%lf\n",x,y);
while(getBuff=getchar()!='\n' getBuff!=EOF); // 清空输入缓冲区残留,了解即可
printf("按回车键结束...");
getchar();
return 0;
}为了避免手机上查看时,代码版式错乱,代码的截图如下,
如有帮助,烦请采纳,谢谢!
外部中断的常用功能
外部中断经常用来记录外部脉冲的个数,也就是当我们使用外部中断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就自加了几次,显示在数码管上的数加了好几下。
形式如下:
void 中断名(void) inerrupt 中断号 using 工作寄存器组
比如外部中断0
void ext0(void) interrupt 0 using 1 //后面的using 1可以省略,缺省为0
定时器1
void t1isr() interrupt 3
扩展资料:
单片机内部结构
1、CPU
它的名字没有改,还是称为CPU(Central Processing Unit)。它是单片机的核心部件,包括运算器和控制器。
运算器既是算术逻辑单元ALU(Arithmetic logic Unit),其功能是进行算术运算和逻辑运算。
控制器一般由指令寄存器、指令译码器、时序电路和控制电路组成。其作用是完成取指令、将指令译码形成各种微操作并执行指令,同时控制计算机的各个部件有条不紊地工作。
2、单片机内部结构之一ROM
“硬盘”,改了名字,称为程序存储器,也叫只读存储器。用ROM(Read only memery)表示。其作用和计算机的硬盘差不多,用来存放用户编写的程序。特点是:掉电后不会丢失数据(程序)。
首先你要写中断函数
然后在主程序中像调用子函数一样调用就可以了
举个例子吧
#define uchar unsigned char
#define uchar unsigned char
sbit D1=P1^0;
uchar aa;
void init()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
if(aa==20)
{
D1=~D1;
aa=0;
}
}
}
void T0time()interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
aa++;
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流