- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机学习开始学习时的笔记
单片机在通电复位后8051内的程序计数器(PC)中的值为‘0000’,所以程序总是从‘0000’单元开始执行,也就是说:在系统的ROM中一定要存在‘0000’这个单元,并且在‘0000’单元中存放的一定是一条指令
一般程序的开头总有这么一条设置堆栈指针的指令,因为开机时,SP的初始值为07H,这样就使堆栈从08H单元开始往后
让一个引脚输出高电平的指令是SETB,让一个引脚输出低电平的指令是CLR。因此,我们要P1.0输出高电平,只要写SETB P1.0,要P1.0输出低电平,只要写 CLR P1.0就可以了我们得把SETB P1.0变为(D2H,90H ),把CLR P1.0变为 (C2H,90H ),至于为什么是这两个数字,这也是由51芯片的设计者--INTEL规定的Regs: R0~R7
Sys: a b sp sp-max dptr PC $ states sec
Psw: p f1 ov rs fo ac cy
RET子程序返回
DJNZ R7,D112个时钟周期。下面让我们算一下一个机器周期是多长时间吧。设一个单片机工作于12M晶振,它的时钟周期是1/12(微秒)。它的一个机器周期是12*(1/12)也就是1微秒。(请计算一个工作于6M晶振的单片机,它的机器周期是多少)。
1秒=1,000,000 微秒(μs) 1秒=1000毫秒(ms)5ms的时间就可以了
复位电路的工作原理是:通电时,电容两端相当于是短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降,降到一定程序,即为低电平,单片机开始正常工作。
MOV P1,#0FFH将P1。0~P1。7都置高电平。同理MOV P1,#00H是将它们都置低电平。
A 累加器 B寄存器。在做乘、除法时放乘数或除数,不做乘除法时,随你怎么用
D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P CY:进位标志 AC:半进位标志 F0:用户标志位 RS1、RS0:工作寄存器组选
择位 0V:溢出标志位 P:奇偶校验位(与汇编相反)
DPTR(DPH、DPL):数据指针
SP:堆栈指针。
数据传递类指令(这以包括了所有的寻址方式)
(一)以累加器为目的操作数的指令
MOV A,Rn ;R1~R7例将工作寄存器R1中的值送入A,R1中的值保持不变(寄存器间接寻址)
MOV A,direct ; direct就是指的直接地址 将direct的值送到A(直接寻址)
MOV A,@Ri ; 先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。如执行命令前R1中的值为20H,则是将20H单元中的值送入A中
MOV A,#data ;将立即数data送入A(立即寻址)
MOV DPTR,#TAB ;将TAB所代表的地址送入DPTR
(二)以寄存器Rn为目的操作的指令
MOV Rn,A
MOV Rn,direct
MOV Rn,#data
(三)以直接地址为目的操作数的指令
MOV direct,A 例: MOV 20H,A ;
(四)以间接地址为目的操作数的指令
MOV @Ri,A 例:MOV @R0,A
(五)十六位数的传递指令
MOV DPTR,#data16
8051是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入DPTR中去。其中高8位送入DPH,低8位送入DPL
(六)累加器A与片外RAM之间的数据传递类指令
MOVX A,@Ri
MOVX @Ri,A
MOVX A,@DPTR
MOVX @DPTR,A
说明:
1)在51中,与外部存储器RAM打交道的只可以是A累加器。所有需要送入外部RAM的数据必需要通过A送去,而所有要读入的外部RAM中的数据也必需通过A读入。在此我们可以看出内外部RAM的区别了,内部RAM间可以直接进行数据的传递,而外部则不行,比如,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也必须先将0100H单元中的内容读入A,然后再送到0200H单元中去。
)要读或写外部的RAM,当然也必须要知道RAM的地址,在后两条指令中,地址是被直接放在DPTR中的。而前两条指令,由于Ri(即R0或R1)只是一个8位的寄存器,所以只提供低8位地址。因为有时扩展的外部RAM的数量比较少,少于或等于256个,就只需要提供8位地址就够了。
)使用时应当首先将要读或写的地址送入DPTR或Ri中,然后再用读写命令。
例:将外部RAM中100H单元中的内容送入外部RAM中200H单元中。
MOV DPTR,#0100H
MOVX A,@
文档评论(0)