需要一个C语言程序。51单片机控制:按键按一下,延迟1分钟后开灯,灯亮半…
当松手时,KEY1 = 1,不满足if语句不 进入循环,LED继续保持当前状态即LED = 0,如果再次按下按键,此时检测到KEY1 = 0,进入循环,LED取反得到LED = 0,灯亮。
首先,在电脑中打开keil软件,创建好工程,然后添加c文件,如下图所示。然后添加c文件,接下来输入代码,先输入一个头文件命令。然后,进行宏定义,代码如图所示。然后声明P1口,如下图所示。
点亮二极管,用“计数器/定时器”赋初值2,按键一次加一次,两次之后又自动清零。溢出一次让接二极管的那个管脚电位拉低(或高,要看驱动的那个三极管类型 NPN \PNP)。
51单片机C语言编程
1、单片机使用最广泛的编程软件是keilc51,KeilC51是美国KeilSoftware公司(ARM公司之一)出品的51系列兼容单片机C语言软件开发系统。单片机C51语言是由C语言继承而来的。
2、void delay(unsigned int i){自己根据单片机频率写个1MS带形参的演示程序} 这个程序是现写的。
3、单片机进入中国比较早,在早前用汇编编程比较多,我在上大学时也是学习的汇编编程,但是现在我用C语言编程,汇编已经不会了。51单片机比较常用的编程环境是Keil,现在Keil更新到Keil5了。如下是51单片机Keil的编程环境。
4、高级语言包括:C语言、BASIC语言和PL\M语言等。(现在一般使用C语言进行单片机编程,其他语言用作单片机编程较少)由于计算机只能看懂机器语言所以无论是汇编语言还是高级语言都需要经过编译成为机器语言才能够执行。
5、数码管前三位显示一个跑表,从000到999之间以1%秒速度运行,当按下一个独立键盘时跑表停止,松开手后跑表继续运行。(用定时器设计表)。
6、--统计脉冲个数,用外部中断更好。--T0和T1,留着定时用。用四个按键控制,按键1控制电机正转,按键2控制电机反转,按键3控制电机1正转,按键4控制电机2正转,怎么用C语言编程?--编程前,要先设计出来电路。
51单片机用c语言怎么写延时函数?
1、C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsigned char类型具有比unsigned int更优化的代码,在使用时应该使用unsigned char作为延时变量。
2、c语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。
3、比如12M晶振for(j=0;j120;j++);大概延时1毫秒,10592M晶振那么for(j=0;j110;j++);延时1毫秒,你这里的for(j=0;j100;j++);延时1毫秒的话,晶振应该是10M,不太常见哟,特别是在单片机方面。
问个关于51单片机调用函数的时间问题(c语言)
下面的是我用定时器0做的延时函数,你看看,可以精确到10ms,如果你还想精确,调定时器的初值就可以。
启动定时器,程序可用读取其计数,或者用定时器触发中断,在中断中自己用变量计数,这样就有了一个时间计数值了。再有就是利用RTC也行。
这个只能是通过看汇编语言来确认你的执行时间,因为C中简单的一句,转换为汇编语言后可能已经是10几条指令了。而汇编语言才能真正体现单片机执行时间的。
这是软件的原因,不可能出现100ms那么大的差距,是你的软件的原因。
不像汇编语言,可以知道有多少指令周期。但c语言可以大致估算:把循环次数增加,然后用秒表计算执行的时间,除以循环的次数,就是每个循环的执行时间,再除以每个指令周期的时间,就是执行的指令周期数。(当然是大致的数量。
关于大小的值:如果是在C语言中,该值不仅与水晶振动、单片机本身的速度,但也与C的编译器,所以,虽然这个值可以精确计算,但大多数情况下,程序员是经验值。