原创 一个最简单的单片机程序

2007-11-14 19:17 2601 2 5 分类: MCU/ 嵌入式

在汇编语言中,让某个端口输出高电平或低电平都有专用的语句,以P1.0端口为例:<?XML:NAMESPACE PREFIX = O />


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


SETB P1.0


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


CLR P1.0


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


<?XML:NAMESPACE PREFIX = V />1.jpg 6


由上图可知,当端口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欧姆的。


2.jpg6


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


3.jpg


7


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

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户377235 2014-11-28 23:31

不错

用户377235 2014-6-17 09:08

你很有才

用户377235 2013-11-28 17:45

写的很好,看后很有收获。
相关推荐阅读
用户119066 2007-11-23 13:00
Proteus软件主要元件、仪表、测试信号等中英文对照
...
用户119066 2007-11-23 12:49
Proteus常用器件中英文对照表
Proteus常用器件中英文对照表都不知道是那里下下来的了AND 与门ANTENNA 天线BATTERY 直流电源BELL 铃,钟BVC 同轴电缆接插件BRIDEG 1 整流桥(二极管)BRIDEG ...
用户119066 2007-11-21 21:33
闪烁LED灯![
摘自“中原孔海洋”学习PIC有一星期左右了,却没有动手做,主要考虑到知道的内容还太少,不敢随便写什么。但总是不写也不行啊,于是动手,做了这个LED灯。简单之极,可不管怎么说也是我的第一个PIC工程,拿...
用户119066 2007-11-21 21:32
霹雳灯
摘自“中原孔海洋”决定这样做个笔记兼日记,如果时间允许、条件可以的话,尽量每天一个PIC项目,全程记录我的PIC学习历程。当然,这样做可能会对有的朋友有点帮助,但主要是希望大家能多多给我提点建议,而且...
用户119066 2007-11-21 21:31
数码管!
摘自“中原孔海洋”结合以前学习的知识,做了一个简单的趣味性的数码管。使用硬件4511译码,程序比较简单。源程序如下:程序中只有“#include <p16f877.inc>”是今天刚刚出现...
用户119066 2007-11-21 21:30
数码管(使用TMR0和查表)!
摘自“中原孔海洋”项目的源程序程序如下:该程序主要使用了有TMR0硬件构成的延时程序,但由于尚未涉及中断,所以延时程序中使用的是查询方式,而不是中断方式,这点事实上在实际中几乎不可能使用,此处需要注意...
EE直播间
更多
我要评论
3
2
关闭 站长推荐上一条 /3 下一条