产品选型

简单的单片机编程 告诉你怎么编写一个最简单的单片机程序

小编 2024-11-24 产品选型 23 0

告诉你怎么编写一个最简单的单片机程序

在汇编语言中,让某个端口输出高电平或低电平都有专用的语句,以P1.0端口为例:

让该端口输出高电平的语句是:

SETB P1.0

让该端口输出低电平的语句是:

CLR P1.0

好了,现在我们将小灯接在单片机的P1.0端口上,如下图所示:

由上图可知,当端口P1.0输出高电平时,小灯D不亮,因为小灯中不会有电流通过;当端口P1.0输出低电平时,小灯就亮,因为此时小灯中有电流通过。

要让小灯亮一会儿、灭一会儿,还必须要有一个延时的程序,下面就是让小灯亮一会儿、灭一会儿,交替闪烁的程序:

MAIN:;程序开始

SETB P1.0;让P1.0输出高电平

LCALL DELAY;这一行是调用延时子程序

;目的是让P1.0保持高电平

;多停留一段时间

CLR P1.0;让P1.0输出低电平

LCALL DELAY;这一行也是调用延时子程序

;和刚才一样,让P1.0保持低

;电平停留一段时间,其实就

;是让它多亮一会儿再熄灭

LJMP MAIN;跳转到MAIN处执行(循环)

;以下是延时子程序,有关该延时程序的内容以后再学

DELAY: MOV R7,#250

D1: MOV R6,#250

D2: DJNZ R6,D2

DJNZ R7,D1

RET

END

在以上汇编程序中,延时子程序每一行的具体含义先不管他,以后慢慢学到,上面的程序需要在一个名为“Keil uVision2”的软件中汇编完成,汇编后得到一个*.hex文件,这就是目标文件,然后用编程器将该文件“写”到单片机89s51中,这样该89s51就具有自动控制小灯闪烁的功能了。

在实验的时候,通常用发光二极管LED代替小灯,由于LED工作电压小,由此LED要串接一个小电阻,用220欧姆——1k之间的都行,我用的是510欧姆的。

这样还不够,单片机工作还需要两个条件,一是需要加上一定的工作电压,AT89S51工作电压为5V,第20脚接负极,第40脚接正极;另外还要给单片机安装一个心脏起搏器,就是振荡器,通常叫做时钟,只要在18脚和19脚之间接一个石英晶体就行了,我用的是12MHz的,另外为了保证振荡器稳定工作,还要在18脚、19脚分别接一个27PF的小电容到地(就是接到负极),此外,89s51的第9脚为复位端,要接一个10uF电容到正极,再接一个10K电阻到负极,最后,第31脚也要和电源的正极接起来,关于31脚,以后再说,这样一台由单片机控制的会自动闪烁的小灯就做好了。下面是完整的电路图:

没有使用的管脚空着就行了,什么也不用接。一通上电,小灯就开始不停的闪烁了。大约1秒钟闪烁3——4次。

本文转载自网络,如有侵权,请联系删除。

单片机编程从简单程序开始,通俗易懂才能轻松入门,电工电子基础

一:编程任务和思路

我们来做一个让灯不断闪烁的简单程序。怎样才能让灯不断地闪烁呢?要灯亮一段时间,再灭一段时间,也就是说要P1口不断地输出高和低电平。

编程思路:

在执行完SETB P1后,延时一段时间(几秒或零点几秒)再执行第二条指令,就可以分辨出灯曾灭过了。执行完第二条指令后,让计算机再去执行第一条指令,不断地在原地兜圈,我们称之为"循环",这样就可以完成任务了。

二:程序编写

主程序

LOOP: SETB P1 ;(1)

LCALL DELAY ;(2)

CLR P1 ;(3)

LCALL DELAY ;(4)

AJMP LOOP ;(5)

子程序

DELAY: MOV R7,#250 ;(6)

D1: MOV R6,#250 ;(7)

D2: DJNZ R6,D2 ;(8)

DJNZ R7,D1 ;(9)

RET ;(10)

END ;(11)

单片机闪灯电路图

三:程序分析说明

1:第一条是让灯灭,第二条是延时,第三条是让灯亮,第四条和第二条一模一样,也是延时,第五条应当是转去执行第一条指令。

2:再看第五条,LJMP是一条指令,意思是转移,往什么地方转移呢?后面跟的是LOOP,看一下,什么地方还有LOOP,对了,在第一条指令的前面有一个LOOP,所以很直观地,我们可以认识到,它要转到第一条指令处。这个第一条指令前面的LOOP被称之为标号,它的用途就是给这一行起一个名字,便于使用。是否一定要给它起名叫LOOP呢?当然不是,起什么名字,完全由编程序的人决定,可以称它为A,X等等,当然,这时,第五条指令LJMP后面的名字也得跟着改了。

3:第二条和第四条指令的用途是延时,它是怎样实现的呢?

指令的形式是LCALL,这条指令称为调用子程序指令,看一下指令后面跟的是什么,DELAY,找一下DELAY,在第六条指令的前面,显然,这也是一个标号。这条指令的作用是这样的:当执行LCALL指令时,程序就转到LCALL后面的标号所标定的程序处执行,如果在执行指令的过程中遇到RET指令,则程序就返回到LCALL指令的下面的一条指令继续执行,从第六行开始的指令中,可以看到确实有RET指令。

在执行第二条指令后,将转去执行第6条指令,而在执行完6,7,8,9条指令后将遇到第10条令:RET,执行该条指令后,程序将回来执行第三条指令,即将P10清零,使灯亮,然后又是第四条指令,执行第四条指令就是转去执行第6,7,8,9,10条指令,然后回来执行第5条指令,第5条指令就是让程序回到第1条开始执行,如此周而复始,灯就在不断地亮、灭了。

4:在标号DELAY标志的这一行到RET这一行中的所有程序,这是一段延时程序,大概延时零点几秒,至于具体的时间,以后我们再学习如何计算。 程序的最后一行是END,这不是一条指令,它只是告诉我们程序到此结束,它被称为"伪指令"。

相关问答

单片机的编程 ?

单片机c语言编程是基于C语言的单片机编程。单片机的C语言采用C51编译器(简称C51)。由C51产生的目标代码短,运行速度高,存储空间小,符合C语言的ANSI标准,生成的...

单片机 最小系统连线步骤?

1、单片机电源可以和负载电源共用,只要电压都是稳定的5V,都可以。但是如果单片机控制外设有的是24V电源,那毫无疑问是不能公用的。2、单片机供电,也就是给...

51 单片机编程 方法?

1.定义的变量不要太多。低128位为用户定义变量的存放区域(默认时),也可以把变量放在高128位,但容易出错,尽量少放,最好不放。通过*.M51可以查看内存变量的存...

一个 单片机 程序多少行?

看做什么应用程序,比如一个耳温枪程序大概2000行看做什么应用程序,比如一个耳温枪程序大概2000行

单片机 新建程序步骤?

1新建程序步骤包含以下几个步骤:a)打开KeilμVision软件b)在Project菜单中选择NewProject,新建一个项目c)在弹出的窗口中选择芯片型号,并...1新建....

c语言 编程单片机 难吗?

c语言编程单片机不难。学习掌握C语言的语法之后,单片机编程就是遵循单片机的技术规范,编写要实现的功能。其实到后来你会发现这个工作和C语言没有什么关系,用...

单片机 系统的开发步骤是什么?

1先根据需求设计最基本的硬件电路图,(检查无误后)2按最基本的硬件电路图,使用面包板,电子元件,搭建实际电路。3按需求编写单片机的软件,可以使用仿真...1...

c51 单片机编程 ?

南邻更可念,布破冬未赎。白毛浮绿水,红掌拨清波。窗含西岭千秋雪,门泊东吴万里船。月下飞天镜,云生结海楼。月出惊山鸟,时鸣春涧中.千山鸟飞绝,万径人...

自己做 单片机 开发板需要什么东西-ZOL问答

开发板一般都是为了展示一款或多款MCU的基本功能的平台,以51单片机为例一般需要购买的材料为:(只写类别)1、面包板或PCB实验板2、电容3、电阻4、继电器5...

程序是怎么写入 单片机 的?

先在电脑中把程序写好,接着通过一个RS232的串口连接至电脑,最后用ISP下载器把程序导入到单片机中就行了。单片机是一种集成电路芯片,是采用超大规模集成电路技...

猜你喜欢