原创 跟我来编一个最简单的单片机程序

2006-9-6 08:25 6227 3 11 分类: 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次。


这个小产品,尽管简单的不能再简单了,但这的的确确是一个完整的开发过程,本人实在想不出比这个再简单的项目了,有关软件的使用今后慢慢说,如果大家有兴趣,今后我将陆续做一些大一些的工程,各位也可以提出课题,我来实施,当然有些可能出于技术保密不能完全公开代码,欢迎各位捧场。

文章评论8条评论)

登录后参与讨论

qiao 2007-4-29 10:59

很好的,继续呀.加油哦!谢谢!!太佩服你了!!!

audio-lab_375178006 2006-10-19 15:42

!!!!!!!!!!!!!!!!!!!!

 

 

lusmiling 2006-9-30 11:08

呵呵,回复以后就看到图片了,谢谢了

lusmiling 2006-9-30 11:04

为什么我看不到图片,是不是浏览器的问题呀!!!!!!!!

cocappjj_256384531 2006-9-20 11:38

图片我能看到啊。博主好久没有更新了。。。

xianfeng.gong 2006-9-6 22:57

上面的图片俺看不到啊!!!!???

xianfeng.gong 2006-9-6 22:56

我想从一点不会学起  希望多指教啊! xianfeng.gong@163.com
msn:xianfeng.gong@hotmail.com

cocappjj_256384531 2006-9-6 11:04

博主,厉害。尽管简单,但是详细。支持!
相关推荐阅读
blueworry 2006-10-05 16:30
电子元件基础
第一章:基本元件第一节 电阻器 电阻,英文名resistance,通常缩写为R,它是导体的一种基本性质,与导体的尺寸、材料、温度有关。欧姆定律说,I=U/R,那么R=U/I,电阻的基本单位是欧姆,用希...
blueworry 2006-10-05 16:24
谈谈怎样看电路原理图
    电器修理、电路设计都是要通过分析电路原理图,了解电器的功能和工作原理,才能得心应手开展工作的。作为从事此项工作的同志,首先要有过硬的基本功,要能对有技术参数的电路原理图进行总体了解,能进行划分...
blueworry 2006-09-14 15:30
泣血的决定
       2006年8月21日,这是我一生中最灰暗的一天。因为在这一天,我彻底失去了我一生中最爱的女孩。而这一切都是因为我的自大、无知、幼稚、愚蠢造成的,我亲手把她弄丢了。我就这样眼睁睁看着她从手...
blueworry 2006-09-14 15:25
Protel 99 SE 在电路设计中的应用
摘  要:介绍了Protel 99 SE在电路设计中的应用,指出了设计中出现的问题,并给出了具体的解决方法。<?xml:namespace prefix = o ns = "urn:schema...
blueworry 2006-09-06 08:06
用Keil在C中嵌入汇编
 作者:温正伟 原载:www.cdle.net  早前公布了C和汇编混编的温度控制器程序,收到一些朋友的询问,他们无法在自己程序中使用我的18B20的汇编子程序或无法正常通过混编后的程序编译。  其实...
广告
我要评论
8
3
1
2
3
4
5
6
7
8
9
0
广告
关闭 热点推荐上一条 /6 下一条