告诉你怎么编写一个最简单的单片机程序
在汇编语言中,让某个端口输出高电平或低电平都有专用的语句,以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,这不是一条指令,它只是告诉我们程序到此结束,它被称为"伪指令"。
相关问答
proteus8 单片机 如何 编程 ?要编程Proteus8单片机,首先需要打开Proteus软件并创建一个新项目。然后,在元件库中选择所需的单片机型号,并将其放置在工作区中。接下来,双击单片机并打开...
51 单片机编程 程序怎么编?51单片机编程程序怎么编?♣这种技术性问题在今日头条上,几乎没有一个高手给你一个答复。因为学习51单片机编程程序是需要长篇大论,并且用电脑操作截图来说明...
怎样自制 单片机 ?要自制单片机,需要完成以下几个步骤:确定设计方案:根据单片机的功能需求,选择合适的芯片型号和开发板。准备工具和材料:需要准备的工具包括焊台、万用表、示...
单片机编程 需要什么配置?1、需要一个编程编译软件,在此软件的编程窗口中编写用户程序,经过软件编译生成hex代码供单片机应用。2、需要一个烧录或下载软件,通过软件与单片机通讯,将用...
自制51 单片机编程 器的方法?STC的芯片的话,直接用MX232芯片加外围电路以及需要烧录芯片的最小系统即可。STC的芯片的话,直接用MX232芯片加外围电路以及需要烧录芯片的最小系统即可。
51 单片机 ,stm32,arduino都是用什么语言进行 编程 的?51单片机,STM32单片机用汇编或者C语言,现在基本都用C语言编程,Arduino有自己的编程环境,用户也是用C语言编程。51单片机的编程51单片机进入中国比较早,在...51...
单片机 1秒钟定时汇编语言怎么编?可以有两种方法,设晶振为12M,则第一种方法:用延时的方法实现DELAY:MOVR3,#10;延时子程序,延时1秒D1:MOVR4,#200D2:MOVR5,#250D3:DJ...
51 单片机 入门教程?1、单片机概念:在一片集成电路芯片上集成微处理器(CPU)、存储器(ROM和RAM)、I/O接口电路,从而构成了单芯片微型计算机,即单片机(singlechipMicrocomput...2、....
单片机 中文 编程 后用哪些方法可以把程序下载到 单片机 ?单片机程序下载常用的方法包括:串口下载:通过串口线将计算机与单片机连接,利用专用下载软件发送程序代码至单片机。并口下载:利用并口线与单片机并口接口连...
为什么自己设计不出来 单片机 程序?该怎么做?设计编写单片机程序是一个渐进的过程不可一蹴而就,毕竟单片机程序是与硬件有密切关系的,我们一般称为单片机程序叫底层硬件驱动程序。编写程序不但要对软件要熟...