版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主编:李文华“十四五”职业教育国家规划教材经全国职业教育教材审定委员会审定显示开关量的输入单片机的P0口作输入端口,外接一个8位的拨码开关。P1口作输出端口,控制8个发光二极管的显示输出,用发光二极管指示拨码开关的状态。当拨码开关的某一位拨到ON位置时,与该位对应的发光二极管就亮,否则就熄灭。
任务要求1、C51中的数据类型基本类型数据如下表所示,构造类型则由基本类型构造而成的。数据类型名称长度unsignedchar无符号字符型1字节signedchar或char有符号字符型1字节unsignedint无符号整型2字节signedint或int有符号整型2字节相关知识unsignedlong无符号长整型4字节signedlong或long有符号长整型4字节float浮点型4字节*指针型1~3字节bit位型1位sfr特殊功能寄存器1字节sfr1616位特殊功能寄存器2字节sbit可寻址位1位说明:①C51中,char型、int型、long型默认为signedchar、signedint和signedlong。②MCS-51单片机是8位的单片机,它可以直接支持的数据类型是无符号字符型、位型(包括可寻址位)以及特殊功能寄存器,在应用程序设计时应尽量使用无符号字符型、位型数据,以便提高程序运行的速度。相关知识2、常量与变量⑴常量:在程序运行的过程中其值始终保持不变的量。常量的表示如下:类型表示方法示例整型十进制数:与日常书写一致0、-27、123、-227十六进制数:以0x开头的数字0x3、-0x1c、0x123八进制:以0开头的数字012、-034、067相关知识长整型数字后面加字母l或L12l、-45l、0x34l、-078l浮点型十进制:带有小数点的数字0.8、-7.8、5.0指数形式:e表示底数10,e后为指数,e前为系数1.2e3、2.3e-5、-4.5e2位型0或者1字符型用单撇号括起来的单个字符'3'、'a'、'W'、'+'字符串型用双撇号括起来的若干个字符"abc"、"中国"、"123"、"1"⑴常量符号常量的定义方法#define 标识符 常量值#defineCONST20//定义符号常量CONST,其值为20【说明】①符号常量的定义是宏定义,语句后面无分号(;)。②程序中使用符号常量可以提高程序的可读性,方便程序的修改。例如,如果要将程序中的常量改为30,则只需符号常量定义部分改为“#defineCONST30”。③习惯上符号常量的标识符采用大写字母表示。相关知识(2)变量定义方法:数据类型 变量名表;“数据类型”是前面介绍的基本类型和后面要学习的构造类型,“变量名表”是由逗号(,)间隔的若干个变量名。【举例】unsignedchari,j; //定义2个无符号字符型变量i,jbit mybit; //定义位变量mybit【说明】变量名只能由字母、数字和下划线3种字符组成,且首字符不能是数字字母的大小写有别变量名的最大长度为255个字符,但C51只识别前32个字符相关知识3、赋值运算运算符:=作用:给变量赋值赋值表达式:用赋值运算符“=”将一个变量与一个表达式连起来的式子。例如,“i=3”就是一个赋值表达式,它所执行的操作是把常数3赋给变量i。赋值语句:在赋值表达式后面加上分号(;)。格式如下:变量名=表达式;
相关知识例如:i=a+b; //将表达式a+b的值赋给变量ij=0x12; //将常数0x12赋给变量j。语句执行后j=0x12i=(j=3)+(k=4);//将表达式(j=3)+(k=4)的值赋给i。语句执行后i=7,j=3,k=4C51中,当赋值运算符两边的数据类型不一致时,系统会自动地进行数据类型转换。转换的法则是,把“=”右边的类型转换成左边的类型,具体的规定如下表所示赋值方式转换规则float赋给int舍去小数int赋给float值不变,加上小数,小数为0unsignedchar赋给整型值赋给整型的低字节,整型的高字节为0x00signedchar赋给整型值赋给整型的低字节,字符型的最高位为1时,整型的高字节为0xff,字符型的最高位为0,整型的高字节为0x00。int赋给char舍去高字节,低字节赋给char相关知识例题下列程序段执行后,a=0xff80,b=0x0040。相关知识unsigned int a,b;char i,j;i=0x80;j=0x40;a=i;b=j;4、特殊功能寄存器的定义⑴8位的特殊功能寄存器定义:sfr 特殊功能寄存器名=特殊功能寄存器的地址;
例如:sfr P0=0x80; //定义特殊功能寄存器P0,其地址为0x80sfr P1=0x90; //定义特殊功能寄存器P1,其地址为0x90sfr TMOD=0x89; //定义特殊功能寄存器TMOD,其地址为0x89【说明】①关键字sfr后面的特殊功能寄存器名实际上是一个标识符,可以任意选取,但一般用大写字母表示。②赋值符“=”后面的地址必须是位于0x80~0xff之间的常数,不能是带有运算符的表达式。③MCS-51单片机的特殊功能寄存器的地址详见表1-2。相关知识⑵16位的特殊功能寄存器的定义sfr16 寄存器名=寄存器低字节的地址值;例如:sfr16 DPTR=0x82;//定义16位的寄存器DPTR,其低字节DPL的地址为0x82,高字节DPH的地址为0x83【说明】用sfr16将2个特殊功能寄存器定义成一个16位的特殊功能寄存器,需要这两个特殊功能寄存器满足下列条件:①需要组合成16位来访问。②两特殊功能寄存器的地址连续,且高字节位于高地址处,低字节位于地址处。相关知识⑶可寻址位的定义特殊功能寄存器中,字节地址能被8整除的特殊功能寄存器的每一位都分配有位地址,这些特殊位就是可寻址位。另外,片内RAM0x20~0x2f这16个字节的每一位也都分配有位地址,也是可寻址位。格式一:sbit 可寻址位名=特殊功能寄存器名^位置编号;【说明】①特殊功能寄存器名必须是已经定义了的特殊功能寄存器的名称,并且该特殊功能寄存器的字节地址能被8整除。②位置编号为可寻址位在特殊功能寄存器中的位置编号,其值为0~7。例如:sfr P0=0x80; //定义特殊功能寄存器P0,其地址为0x80sbitP0_0=P0^0; //定义可寻址位P0_0,它是P0的第0位相关知识格式二:sbit 可寻址位名=字节地址^位置编号;相关知识【说明】①定义特殊功能寄存器中的可寻址位时,字节地址必须位于0x80~0xff之间,并且能被8整除。②定义片内RAM0x20~0x2f中的可寻址位时,字节地址必须位于0x20~0x2f之间。③位置编号与格式一中相同。例如:sbit P1_1=0x90^1;//定义可寻址位P1_1,其位地址为0x91sbit TR0=0x88^4; //定义可寻址位TR0,其位地址为0x8csbit
mybit=0x20^1;//定义可寻址位mybit,它是片内RAM0x20的第1位格式三:sbit 可寻址位名=位地址值;相关知识例如:sbit P1_1=0x91; //定义可寻址位P1_1,其位地址为0x91sbit OV=0xd7; //定义可寻址位OV,其位地址为0xd75、并行端口P1的应用特性P1口的位结构如下:相关知识P1口的输出特性①输出驱动级内接有上拉电阻。P1口作为输出端口使用时,其外部引脚上可以不接上拉电阻。②输出具有锁存功能。特殊功能寄存器P1是P1口的输出锁存器。③输出数据操作。向特殊功能寄存器P1写数,数据就从P1口并行输出;向特殊功能寄存器P1的某一位P1.i写一位数,该数位就从P1.i引脚输出。相关知识例如:sfr P1=0x90; //定义特殊功能寄存器P1sbit P1_1=P1^1; //定义P1的第1位sbit P1_5=P1^5 ; //定义P1的第5位P1=0x5a; //P1口并行输出数据0x5a,P1.7~P1.0依次输出01011010P1_1=1; //P1.1口线输出高电平1P1_5=0; //P1.5口线输出低电平0相关知识P1口的输入特性①输入具有缓冲功能。②读取引脚信号的方法比较特殊。读引脚输入的方法是,先向特殊功能寄存器P1的每一位数写1,再读端口。相关知识例如,读P1.5引脚上的数据就要用如下程序段:P1_5=1; //向锁存器P1.5写1,切断驱动级对引脚输入信号的影响mybit=P1_5; //读引脚P1.5上的输入数据至mybit位中将P1口8个引脚上的信号读至无符号字符型变量m中:P1=0xff; //向P1口8位锁存器写1m=P1; //读P1口引脚输入信号至m中相关知识③对P1进行“读-修改-写”操作时,所读入的数据为特殊功能寄存器P1中的数据。例如:P1=P1|0x5a; //P1口的内容与数0x5a按位或后再写入P1口P1--; //P1口的内容自减1P1口的输出驱动能力只能驱动4个LSTTL负载。如果负载过大,则需要在端口上外接驱动电路后方可接负载。相关知识⑷复位后的状态单片机复位后,特殊功能寄存器P1的值为0xff,P1口输出全为高电平1,即输出0xff。【说明】现代增强型MCS-51单片机中,在P1.0、P1.1两个引脚上分配了第二功能,某位引脚上的第二功能没使用时,该端口可作为普通的I/O端口使用。复位时,P1.0和P1.1口的第二功能自动关闭,这些端口自动处于I/O端口状态。相关知识6、并行端口P0的应用特性P0口的位结构如下:既可以作普通的I/O端口使用,又可以作数据/地址总线口使用。控制C=1时,P0口作地址/数据总线使用,由Q1、Q0组成推挽输出电路对地址/数据信号输出。控制C=0时,P0口作普通I/O口使用,此时使Q1截止,Q0处于漏极开路输出状态。相关知识6、并行端口P0的应用特性控制C=0时P0口的位结构如下:相关知识P0的输出特性输出驱动级为漏极开路电路。作输出口使用时,如果电流是从端口流向负载(即负载为拉电流负载),则需要在输出引脚与正电源之间接上一个10KΩ左右的上拉电阻。如果电流是从负载流向端口(负载为灌电流负载),则可以不加上拉电阻,也可以外接上拉电阻。输出具有锁存功能。特殊功能寄存器P0就是P0口的内部锁存器输出操作方法与P1口相同。相关知识P0口的输入特性与P1口作为输入口使用一样。P0口的输出驱动能力P0口的每一位可以驱动8个LSTTL负载。复位后P0口的状态单片机复位后,特殊功能寄存器P0的值为0xff,可以作普通的I/O口直接进行输入或者输出操作。P0口作普通I/O口使用的条件当单片机片外不扩展程序存储器、不扩展并行RAM并且也不扩展并行I/O芯片时,P0口可作为普通的I/O口使用。相关知识电路图如下:任务实施1、搭建硬件电路(1)流程图:程序结构的图解表示方法。常用的符号如下:任务实施2、编写软件程序(1)流程图:程序结构的图解表示方法。任务2的流程图如下:变换拨码开关的某一位拨至ON位置时,对应输入引脚的输入为低电平0;在发光二极管的控制电路中,采用的是低电平有效控制,输出为0时,发光二极管就亮。因此,可以直接用拨码开关的输入状态数据来控制发光二极管的显示输出。
任务实施2、编写软件程序任务实施2、编写软件程序(2)程序代码sfr P0=0x80; //1定义特殊功能寄存器P0sfr P1=0x90; //2定义特殊功能寄存器P1void main(void) //3主函数main{ while(1) //4while循环(详见任务4):永不停
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中考数学高频考点一轮复习:无理数与实数(含解析)
- 2026中考数学高频考点一轮复习:数据分析(含解析)
- 医学心理学PBL隐性课程的共情能力构建
- 权利义务转让协议书
- 股票行业就业指导
- 个人职业规划开发
- 一级建造师机电就业方向
- 化学工程职业规划
- 医学影像云与区域急救体系联动
- 《冲压与塑料成型》-项目三
- 企业数据安全制度
- 《机械制图》电子教材
- 2025年自然博物馆招聘面试模拟试题集
- 航线运输基础知识培训课件
- 2024年温州永嘉县国有企业招聘考试真题
- 眼眶骨折的影像学诊断
- DBJ51T 189-2022 四川省建设工程施工现场安全资料管理标
- 2025年山东高考化学真题及答案
- 2025年四川省中医住院医师规范化培训试题
- 《二氧化碳捕集原理与技术》 课件 第一章 绪论
- 复工复产的应急预案
评论
0/150
提交评论