您的位置 首页 硬件

51单片机学习笔记(一)_总记

单片机电路仿真软件Proteus;编程软件Keil;在Proteus中设计好电路图、在Keil中编写程序编译生成十六进制文件。在电路图中载入该十六进制文…

单片机电路仿真软件Proteus;编程软件Keil;

在Proteus中设计好电路图、在Keil中编写程序编译生成十六进制文件。

在电路图中载入该十六进制文件经过相应的程序控制电路。

51hei单片机+Proteus视频+实例+开发工具包 http://download.csdn.net/detail/leytton/7658297

http://www.51hei.com/

文章阅览

http://www.51hei.com/mcuteach/252.html

http://www.51hei.com/mcuteach/150.html

视频教程

http://www.51hei.com/sp/

JBJB P1.3,L1 意思便是判别P1.3的值是不是“1” 如果是就跳转到L1程序碑文

eg1

MOV R7,#250 ;赋值R7=250 留意没有”H”

LOOP:

DJNZ R7,LOOP ;R7=R7-1;if(R7!=0) goto LOOP;循环250次

eg2 http://www.51hei.com/mcuteach/244.html

MOV R7,#20

   MOV R0,#30H

LOOP:MOV A,@R0

   INC R0

   DJNZ R7,LOOP

这个例程中大部份指令咱们是能看懂的,榜首句,是将当即数20送到R7中,碑文完后R7中的值应当是20。第二句是将当即数30H送入R0作业寄存器中,所以碑文完后,R0单元中的值是30H,第三句,这是看一下R0单元中是什么值,把这个值作为地址,取这个地址单元的内容送入A中,此刻,碑文这条指令的成果就相当于MOV A,30H。第四句,没学过,便是把R0中的值加1,因而碑文完后,R0中的值便是31H,第五句,学过,将R7中的值减1,看是否等于0,不等于0,则转到标号LOOP处持续碑文,因而,碑文完这句后,将转去碑文MOV A,@R0这句话,此刻相当于碑文了MOV A,31H(由于此刻的R0中的值已是31H了),如此,直到R7中的值逐次相减等于0,也便是循环20次学校,就完成了咱们的要求:从30H单元开端将20个数据送入A中。

AJMP无条件跳转指令

以直接地址为意图操作数的指令

MOV direct,A例:MOV 20H,A

MOV direct,Rn MOV 20H,R1

MOV direct1,direct2 MOV 20H,30H

MOV direct,@Ri MOV 20H,@R1

MOV direct,#data MOV 20H,#34H

以直接地址为意图操作数的指令

MOV @Ri,A例:MOV @R0,A

MOV @Ri,direct MOV @R1,20H

MOV @Ri,#data MOV @R0,#34H

十六位数的传递指令

MOV DPTR,#data16

51单片机汇编指令周期表:

http://blog.sina.com.cn/s/blog_4419d72d0100mt7r.html

http://www.51hei.com/mcuteach/242.html

单片机的累加器A与片外RAM之间的数据传递类指令

MOVX A,@Ri

MOVX @Ri,A

MOVX A,@DPTR

MOVX @DPTR,A

在51系列单片机中,与外部存储器RAM打交道的只能是A累加器。一切需求传送入外部RAM的数据必需求经过A送去,而一切要读入的外部RAM中的数据也必需经过A读入。在此咱们能看出内外部RAM的区别了,内部RAM间能直接进行数据的传递,而外部则不可,比方,要将外部RAM中某一单元(设为0100H单元的数据)送入另一个单元(设为0200H单元),也有必要先将0100H单元中的内容读入A,然后再传送到0200H单元中去。

MOVC便是读代码存储器,MOVX便是读写外部存储器,即外部RAM

51C言语

表 3-1 KEIL uVision2 单片机c言语编译器所支撑的数据类型

摘自http://www.51hei.com/mcuteach/146.html

数据类型

长 度

值 域

unsigned char

单字节

0~255

signed char

单字节

-128~+127

unsigned int

双字节

0~65535

signed int

双字节

-32768~+32767

unsigned long

四字节

0~4294967295

signed long

四字节

-2147483648~+2147483647

float

四字节

±1.175494E-38~±3.402823E+38

*

1~3 字节

目标的地址

bit

0 或 1

sfr

单字节

0~255

sfr16

双字节

0~65535

sbit

0 或 1

位运算:[摘自百度百科]

P1=(4>0)&&(9<0xab);//将逻辑运算成果送P1口

P0=0xa2^0x3c;//将条件运算成果送P0口,P0=8=0000 1000B

一个简略的C51程序[参阅http://www.51hei.com/mcuteach/248.html]

#include void DELAY()   //延时函数{ unsigned char i,j;for(i=0;i<250;i++){for(j=0;j<200;j++);} }void main() //程序从这儿开端碑文{while(1) //这句的效果便是重复的碑文下面这个{}中包括的4句{P1_0=1;  //(1)熄灭灯DELAY(); //(2)延时一段时间P1_0=0;  //(3)点亮灯DELAY(); //(4)延时一段时间}}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/yingjian/263733.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部