文档介绍:第2讲:指令系统及开发语言
一、指令系统概述
1、指令分类
MCS-51系列单片机共有111条指令
按功能可分成5类指令:
数据传送指令(29条)
算术运算指令(24条)
发光报警
接口电路设计见右图
R1
330
+5V
D1
LED
R2
+5V
Q1
8550
B1
BELL
+5V
R3
10K
SW1
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#60H
LOOP1: JB , $
JNB , $
LCALL SOUND
SJMP LOOP1
SOUND: MOV R7, #5
SOUND1: CLR
MOV R0, #20
LCALL DELAY
SETB
MOV R0, #10
LCALL DELAY
DJNZ R7, SOUND1
RET
DELAY: MOV R1,#100 ;100ms
DELAY1: MOV R2,#200 ;1ms
DELAY2: NOP
NOP
NOP
DJNZ R2, DELAY2
DJNZ R1, DELAY1
DJNZ R0, DELAY
RET
四、C51程序设计举例
1、C51是专用于51单片机硬件开发的C语言。
2、C51与标准C的区别,大致可分为8类:
a)8051存储类型及存储区域;
b)存储模式;
c)存储器类型声明;
d)变量类型声明;
e)位变量与位寻址;
f)特殊功能寄存器;
g)C51指针;
h)函数属性。
a)存储类型及存储区域
code: 程序存储区
内部数据存储区:
data:直接寻址区,内部RAM低128位(00H~7FH)
idata:间接寻址区,整个内部RAM(00H~FFH)
bdata:可位寻址区(20H~2FH)
外部数据存储区:
xdata:可指定64K外部RAM(0000H~0FFFFH)
pdata:能访问1页(256Byte)的外部RAM
特殊功能寄存器:
sfr:字节寻址 比如 sfr P0=0x80;为PO口地址为80H
sfr16:字寻址,如sfr16 T2=0xcc;指定Timer2口地址 T2L=0xcc T2H=0xCD;
sbit:位寻址,如sbit EA=0xAF
b)存储模式
存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种(在C51编译器选项中选择):
Small模式所有缺省变量参数均装入内部RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。
Compact模式所有缺省变量均位于外部RAM区的一页(256Bytes),具体哪一页可由P2口指定,,也可用pdata指定,优点是空间较Small宽裕,速度较Small慢,较large要快,是一种中间状态。
Large模式所有缺省变量可放在多达64KB的外部RAM区,优点是空间大,可存变量多,缺点是速度较慢。
C)存储器类型声明
变量或参数的存储类型可由存储模式指定缺省类型,也可由关键字直接声明指定。各类型分别用:code,data,idata,xdata,pdata说明
例:data uar1;
char code array[ ]=“hello!”;unsigned char xdata arr[10][4];
d)变量类型声明
C51提供以下几种扩展数据类型: bit :位变量值为0或1 sbit :从字节中定义的位变量 0或1 sfr :sfr字节地址 0~255 sfr16 :sfr字地址 0~65535其余数据类型如:char,enum,short,int,long,float等与ANSI C(标准C)相同。
e)位变量与位寻址
●位变量定义用bit,存储于内部RAM的20H~2FH
●可位寻址区说明:
可作如下定义:int bdata i;unsigned char bdata arr[3],然后:sbit bit0=i^0;sbit bit15=i^15;sbit arr07=arr[0]^7;sbit arr17=arr[1]^7;
f)特殊功能寄存器
g)C51指针
●一般指针的声明与标准C的