收藏 分享(赏)

《单片机原理及应用》课件01-C51语言指令.ppt

上传人:bubibi 文档编号:20014241 上传时间:2023-12-02 格式:PPT 页数:21 大小:432.50KB
下载 相关 举报
《单片机原理及应用》课件01-C51语言指令.ppt_第1页
第1页 / 共21页
《单片机原理及应用》课件01-C51语言指令.ppt_第2页
第2页 / 共21页
《单片机原理及应用》课件01-C51语言指令.ppt_第3页
第3页 / 共21页
《单片机原理及应用》课件01-C51语言指令.ppt_第4页
第4页 / 共21页
《单片机原理及应用》课件01-C51语言指令.ppt_第5页
第5页 / 共21页
亲,该文档总共21页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、第第4章章单片机单片机C51编程编程l l数据存储类型数据存储类型l lC51数据类型数据类型l l存储模式存储模式l l对存储器和外接对存储器和外接I/O的绝对地址的绝对地址访问访问l lC51函数函数4.1C51数据类型及运算符数据类型及运算符一、一、C51的数据存储类型的数据存储类型8051单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区,单片机存储区可分为内部数据存储区、外部数据存储区以及程序存储区,如何将每个变量明确地分配到指定的存储空间。如何将每个变量明确地分配到指定的存储空间。C51存储类型与存储类型与8051存储空间的对应关系存储空间的对应关系存存储储区区描述描述

2、data片内片内RAM的低的低128字字节节,可在一个周期内直接,可在一个周期内直接寻寻址址bdata片内片内RAM的位的位寻寻址区,址区,16字字节节idata片内片内RAM的的256字字节节,必,必须须采用采用间间接接寻寻址址xdata外部数据存外部数据存储储区,使用区,使用DPTR间间接接寻寻址址pdata外部存外部存储储区的区的256个字个字节节,通,通过过P0口的地址口的地址对对其其寻寻址。址。使用使用MOVX Ri,需要两个指令周期,需要两个指令周期code程序存程序存储储区,使用区,使用DPTR寻寻址。址。例:例:ucsignedcharbdataage;/在位寻址区定义ucsi

3、gnedchar类型的变量agebitflag=age7/用关键字用关键字sbit定义位变量来独立访问可寻址位对象的其中一位定义位变量来独立访问可寻址位对象的其中一位charcodeNAME=“ZHAOMING”定义变量时如果省略存储器类型,系统则会按编译模式定义变量时如果省略存储器类型,系统则会按编译模式SMALL、COMPACT或或LARGE所规定的默认存储器类型去指定变量的存储区域。所规定的默认存储器类型去指定变量的存储区域。无论什么存储模式都可以声明变量在任何的无论什么存储模式都可以声明变量在任何的8051存储区范围,存储区范围,把最常用的变量、命令放在内部数据区可以显著的提高系统性能

4、。把最常用的变量、命令放在内部数据区可以显著的提高系统性能。C51支持的主要编译模式:支持的主要编译模式:存存储模式模式说 明明SMALLSMALL 函数参数及局部函数参数及局部变量放在片内量放在片内RAMRAM(默默认变量量类型型为DATADATA,最大最大128128字字节)。另外所有)。另外所有对象包括象包括栈都都优先放置于片内先放置于片内RAMRAM,当片内当片内RAMRAM用用满,再向片外,再向片外RAMRAM放置。放置。COMPACTCOMPACT 参数及局部参数及局部变量放在片外量放在片外RAMRAM(默默认的存的存储类型是型是PDATAPDATA,最,最大大256256字字节)

5、;通);通过R0R0、R1R1间接接寻址,址,栈位于位于80518051片内片内RAMRAM。LARGELARGE 参数及局部参数及局部变量直接放入片外量直接放入片外RAM(RAM(默默认的存的存储类型是型是XDATAXDATA,最大,最大64KB64KB);使用数据指;使用数据指针DPTRDPTR间接接寻址。因此址。因此访问效率效率较低低且直接影响代且直接影响代码长度度二、二、C51的数据类型的数据类型通过通过“文件包含文件包含”简化设计简化设计#include“reg51.h”访问SFR的数据类型:sfrsfr16sbit“文件包含文件包含”是指一个文件将另外一个文件的内容全部包含进来,是

6、指一个文件将另外一个文件的内容全部包含进来,程序虽然只有一行,但程序虽然只有一行,但C编译器在处理的时候却要处理几十或编译器在处理的时候却要处理几十或几百行。几百行。特殊功能寄存器的特殊功能寄存器的C51定义定义7reg51.hreg51.h 文件包含的内容文件包含的内容:/*-REG51.HHeaderfileforgeneric80C51and80C-*/*BYTERegister*/sfrP0=0 x80;sfrP1=0 x90;sfrP2=0 xA0;sfrP3=0 xB0;sfrPSW=0 xD0;sfrACC=0 xE0;sfrB=0 xF0;sfrSP=0 x81;sfrDPL=

7、0 x82;sfrDPH=0 x83;sfrPCON=0 x87;sfrTCON=0 x88;sfrTMOD=0 x89;sfrTL0=0 x8A;sfrTL1=0 x8B;sfrTH0=0 x8C;sfrTH1=0 x8D;sfrIE=0 xA8;sfrIP=0 xB8;sfrSCON=0 x98;sfrSBUF=0 x99/*BITRegister*/*PSW*/sbitCY=0 xD7;sbitAC=0 xD6;sbitF0=0 xD5;sbitRS1=0 xD4;sbitRS0=0 xD3;sbitOV=0 xD2;sbitP=0 xD0;/*TCON*/sbitTF1=0 x8F;s

8、bitTR1=0 x8E;sbitTF0=0 x8D;sbitTR0=0 x8C;sbitIE1=0 x8B;sbitIT1=0 x8A;sbitIE0=0 x89;sbitIT0=0 x88;/*IE*/sbitEA=0 xAF;sbitES=0 xAC;sbitET1=0 xAB;sbitEX1=0 xAA;sbitET0=0 xA9;sbitEX0=0 xA8;l l/*IP*/sbitPS=0 xBC;sbitPT1=0 xBB;sbitPX1=0 xBA;sbitPT0=0 xB9;sbitPX0=0 xB8;l l/*P3*/sbitRD=0 xB7;sbitWR=0 xB6;sb

9、itT1=0 xB5;sbitT0=0 xB4;sbitINT1=0 xB3;sbitINT0=0 xB2;sbitTXD=0 xB1;sbitRXD=0 xB0;l l/*SCON*/sbitSM0=0 x9F;sbitSM1=0 x9E;sbitSM2=0 x9D;sbitREN=0 x9C;sbitTB8=0 x9B;sbitRB8=0 x9A;sbitTI=0 x99;sbitRI=0 x98;l lP0-P3各个位需单独定义:sbitP1_0=P10;三、三、C51对存储器和外部对存储器和外部I/O的绝对地址访问的绝对地址访问绝对地址访问头文件绝对地址访问头文件:absacc.h函数

10、:函数:CBYTECWORD(CBYTECWORD(访问访问codecode区区)DBYTEDWORD(DBYTEDWORD(访问访问datadata区区)PBYTEPWORD(PBYTEPWORD(访问访问pdatapdata区区)XBYTEXWORD(XBYTEXWORD(访问访问xdataxdata区区)例:例:#include#includeDBYTE0 x30=0 x10;DBYTE0 x30=0 x10;XBYTE0 xfffe=0 x20;XBYTE0 xfffe=0 x20;XWORD0 x1000=0 xfffd;XWORD0 x1000=0 xfffd;R0-R7非非SFR

11、,如程序中使用如程序中使用Rn,要用绝对地址定义:要用绝对地址定义:要用绝对地址定义:要用绝对地址定义:#defineR0DBYTE0 x00#defineR0DBYTE0 x00#defineR7DBYTE0 x07#defineR7DBYTE0 x07四、C51的运算符1.1.将将将将“”右边的值赋给右边的值赋给右边的值赋给右边的值赋给“”左边的变量左边的变量左边的变量左边的变量(注:不注:不注:不注:不是相等运算符是相等运算符是相等运算符是相等运算符)2.C512.C51的算术运算符的算术运算符的算术运算符的算术运算符+(+(加或正号加或正号加或正号加或正号);(减或负号减或负号减或负号

12、减或负号);*(乘号乘号乘号乘号);/(/(除号除号除号除号);%(%(求余求余求余求余)优先级为:先乘除,后加减,先括号内,再括号外优先级为:先乘除,后加减,先括号内,再括号外优先级为:先乘除,后加减,先括号内,再括号外优先级为:先乘除,后加减,先括号内,再括号外3.C513.C51的关系运算符有六种:的关系运算符有六种:的关系运算符有六种:的关系运算符有六种:(小于小于小于小于);(大于大于大于大于);=(=(小于等于小于等于小于等于小于等于);=(=(大于等于大于等于大于等于大于等于);=(=(相等相等相等相等);!=(!=(不相等不相等不相等不相等)优先级:前四个高,后二个优先级:前四

13、个高,后二个优先级:前四个高,后二个优先级:前四个高,后二个“=”和和和和“!=!=”级别低级别低级别低级别低4.C514.C51的逻辑运算符有三种:的逻辑运算符有三种:的逻辑运算符有三种:的逻辑运算符有三种:&(&(逻辑与逻辑与逻辑与逻辑与);|(|(逻辑或逻辑或逻辑或逻辑或);!(!(逻辑非逻辑非逻辑非逻辑非)运算符的两边为关系表达式,逻辑表达式和关系表运算符的两边为关系表达式,逻辑表达式和关系表运算符的两边为关系表达式,逻辑表达式和关系表运算符的两边为关系表达式,逻辑表达式和关系表达达达达式的值相同,以式的值相同,以式的值相同,以式的值相同,以“0”0”代表假,以:代表假,以:代表假,以

14、:代表假,以:“1”1”代表真。代表真。代表真。代表真。以上三种运算的优先级见图以上三种运算的优先级见图以上三种运算的优先级见图以上三种运算的优先级见图4.14.1。5.C515.C51的按位操作的运算符有六种:的按位操作的运算符有六种:的按位操作的运算符有六种:的按位操作的运算符有六种:&(按位与按位与按位与按位与);(按位或按位或按位或按位或);(按位异或按位异或按位异或按位异或);(位取反位取反位取反位取反);(位右移位右移位右移位右移)(注注注注:移位操作为补零移位移位操作为补零移位移位操作为补零移位移位操作为补零移位)例例例例1.a=0 xf01.a=0 xf0;表达式表达式表达式表

15、达式a=a=a a值为值为值为值为0FH0FH例例例例2.a=0 xea2.a=0 xea;表达式表达式表达式表达式a2a2值为值为值为值为A8HA8H,即,即,即,即a a值左移两值左移两值左移两值左移两位,移位后空白位补位,移位后空白位补位,移位后空白位补位,移位后空白位补0 06.自增、自减运算符自增、自减运算符+i,-i(在使用在使用i之前,先使之前,先使i值加值加(减减)1)i+,i-(在使用在使用i之后,再使之后,再使i值加值加(减减)1)例例设设i原值为原值为5如如j=+i则则j值为值为6,i值也为值也为6如如j=i+则则j值为值为5,i值为值为67.复合赋值运算符复合赋值运算符

16、+=,-=,*=,/=,%=,=,&=,=,|=。例:例:a+=b相当于相当于a=a+b。A=g相当于相当于a=ag8 8.对指针操作的运算符对指针操作的运算符&取地址运算取地址运算取地址运算取地址运算*间址运算符间址运算符间址运算符间址运算符例例例例 a=&ba=&b;取;取;取;取b b变量的地址送变量变量的地址送变量变量的地址送变量变量的地址送变量aa。例例例例 char*b;c=*bchar*b;c=*b;将以;将以;将以;将以b b的内容为地址的单元的的内容为地址的单元的的内容为地址的单元的的内容为地址的单元的内容送内容送内容送内容送C C。注意注意注意注意:l l“&”与按位与运算符的差别,如果与按位与运算符的差别,如果与按位与运算符的差别,如果与按位与运算符的差别,如果“&”为为为为“与与与与”,&的的的的两边必须为变量或常量;两边必须为变量或常量;两边必须为变量或常量;两边必须为变量或常量;l l“*”与及指针定义时指针前的与及指针定义时指针前的与及指针定义时指针前的与及指针定义时指针前的“*”的差别,如的差别,如的差别,如的差别,如char*char*ptpt的的的的“*”只表示只表示只表示只表示ptpt为指针为指针为指针为指针 变量,不代表间址取内容的运算。变量,不代表间址取内容的运算。变量,不代表间址取内容的运算。变量,不代表间址取内容的运算。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 网络技术 > 前端技术

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:文库网官方知乎号:文库网

经营许可证编号: 粤ICP备2021046453号世界地图

文库网官网©版权所有2025营业执照举报