原创 自学单片机

2007-8-23 22:53 3403 9 12 分类: MCU/ 嵌入式

由于自己工作上碰到这方面的需求,不得不了解学习下。(不多说了学习........)


有网络真是太棒了,自从那天在PP51网站里面得版主于XX人聊天中,版主老提到平凡单片机教程,第二天就踏进平方教程里面去了,感觉很实在  不错,作者得打比方对读者得理解能力很好。接下去做下笔记(曾有位老板对我说过要做大老板一定要会用笔记得哦)icon


低电平控制程序:CLR  P10    高电平:SETB  P10  


LCALL 调用子程序  


LJMP   转移指令(长转移icon)AJMP 转移指令    两个周期不一样icon    第四课结束。。。。明天在学(别以为就这么点东西,其实看了很多得鲁,笔记在于重点icon


第五课


DELAY: MOV R7,#250   


D1: MOV R6,#250   


D2: DJNZ R6,D2    


DJNZ R7,D1       


RET


把数据250送到R7   然后数据250再送到R6  DJNZ 双周期指令 R6-1减到0为此,跳到D2。然后DJNZ双周期指令 R7-1 跳到D1 减到零为止,循环一步一步工作, 最终被执行250*250次。2


设计一个延时100毫秒的延时程序。( 设一个机器周期包括12个时钟周期单片机工作于12M晶振)
50000次*2=100us(DJNZ:双周期指令)
   MOV R1 #250
A :MOV R2  #200
B: DJNZ  R2 B
     DJNZ R1  A   (R1 R2 存贮容量不考虑)


单片机复位电路


15019d15-fcb1-416e-800d-ccceacf492c3.jpg
这种复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。


为什么短路么? (当然是短路的呀,电容初始状态是0V,没有电量,相当短路的状态。)


INC R0   R0的值加1


 


MOVC A@A+DPTR


本指令是将ROM中的数送入A中。本指令也被称为查表指令,常用此指令来查一个已做好在ROM中的表格



堆栈操作


PUSH direct


POP direct


第一条指令称之为推入,就是将direct中的内容送入堆栈中,第二条指令称之为弹出,就是将堆栈中的内容送回到direct中。推入指令的执行过程是,首先将SP中的值加1,然后把SP中的值当作地址,将direct中的值送进以SP中的值为地址的RAM单元中。例:


MOV SP#5FH


MOV A#100


MOV B#20


PUSH ACC


PUSH B


则执行第一条PUSH ACC指令是这样的:将SP中的值加1,即变为60H,然后将A中的值送到60H单元中,因此执行完本条指令后, 内存60H单元的值就是100,同样,执行PUSH B时,是将SP+1,即变为61H,然后将B中的值送入到61H单元中,即执行完本条指令后,61H单元中的值变为20


POP指令的执行是这样的,首先将SP中的值作为地址,并将此地址中的数送到POP指令后面的那个direct中,然后SP1


接上例:


POP B


POP ACC


则执行过程是:将SP中的值(现在是61H)作为地址,取61H单元中的数值(现在是20),送到B中,所以执行完本条指令后B中的值是20,然后将SP1,因此本条指令执行完后,SP的值变为60H,然后执行POP ACC,将SP中的值(60H)作为地址,从该地址中取数(现在是100),并送到ACC中,所以执行完本条指令后,ACC中的值是100


这有什么意义呢?ACC中的值本来就是100B中的值本来就是20,是的,在本例中,的确没有意义,但在实际工作中,则在PUSH B后往往要执行其他指令,而且这些指令会把A中的值,B中的值改掉,所以在程序的结束,如果我们要把AB中的值恢复原值,那么这些指令就有意义了。


还有一个问题,如果我不用堆栈,比如说在PUSH ACC指令处用MOV 60HA,在PUSH B处用指令MOV 61HB,然后用MOV A60HMOV B61H来替代两条POP指令,不是也一样吗?是的,从结果上看是一样的,但是从过程看是不一样的,PUSHPOP指令都是单字节,单周期指令,而MOV指令则是双字节,双周期指令。更何况,堆栈的作用不止于此,所以一般的计算机上都设有堆栈,而我们在编写子程序,需要保存数据时,通常也不采用后面的方法,而是用堆栈的方法来实现。


例:写出以下程序的运行结果


MOV 30H#12


MOV 31H#23


PUSH 30H


PUSH 31H


POP 30H


POP 31H


结果是30H中的值变为23,而31H中的值则变为12。也就两者进行了数据交换。从这个例子可以看出:使用堆栈时,入栈的书写顺序和出栈的书写顺序必须相反,才能保证数据被送回原位,否则就要出错了。

PARTNER CONTENT

文章评论3条评论)

登录后参与讨论

用户1302782 2007-9-3 21:59

是点上传图片那样的.我上次都能的 这次我传了  好几次还这样

用户1302782 2007-8-30 22:47

我也不知道为什么看不到图  我已经传上去的了

用户15482 2007-8-30 12:39

文章不错,等下文。
相关推荐阅读
用户1302782 2008-04-11 13:00
机器周期计算
一个机器周期包括12个时钟周期。下面让我们算一下一个机器周期是多长时间吧。设一个单片机工作于12M晶振,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。(请计算一个工...
用户1302782 2007-12-19 11:05
orcad的元件库列表
orcad的元件库列表1' AMPLIFIER.OLB共182个零件,存放模拟放大器IC,如CA3280,TL027C,EL4093等。2' ARITHMETIC.OLB共182个零件,存放逻辑运算I...
用户1302782 2007-12-19 11:03
ORCAD常用电压电流源简介!!!
ORCAD常用电压电流源简介!!! ...
用户1302782 2007-12-06 13:28
电容分类
电容的基础知识 (1) 根据介质的不同,同时结合实际应用中的具体情况,我们把电容器简单分为三类 第一类:电解类 电解电容器是指在铝、钽、铌、钛等阀金属的表面采用阳极氧化法生成一薄层氧化物作为电介质,以...
用户1302782 2007-11-19 10:01
电子镇流器电感计算和谐振电容计算!
下面是我的计算方法,大家看看有没有问题? 供电电压DC:400V 功率:40W 频率:40KHz 管压:115V 计算:限流电感,和谐振电容? 有效电压值=400V -115V=285V 电感压降=2...
用户1302782 2007-11-13 08:31
电子产品从有铅转向无铅,应注意哪些技术性的问题
传统的锡铅焊料在电子装联中已经应用了近一个世纪。Sn63/Pb37共晶焊料的导电性、稳定性、抗蚀性、抗拉和抗疲劳、机械强度、工艺性都是非常优秀的,而且资源丰富,价格便宜。是一种极为理想的电子焊接材料。...
我要评论
3
9
关闭 站长推荐上一条 /3 下一条