欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第3章并行IO端口及C51编程ppt课件.ppt

    • 资源ID:16976411       资源大小:2.94MB        全文页数:61页
    • 资源格式: PPT        下载积分:30金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要30金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第3章并行IO端口及C51编程ppt课件.ppt

    第第3章章 并行并行IO端口及端口及C51编程编程第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程第第3 3章章 并行并行IOIO口口P0P0P3P3及及C51C51编程编程第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 LED流水灯的控制设计流水灯的控制设计 输入输出功能的控制设计输入输出功能的控制设计内容提要内容提要第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程计算机对外设进行数据操作时,外设的数据是不能直接接到计算机对外设进行数据操作时,外设的数据是不能直接接到CPUCPU的数据线上的,必须经过接口的数据线上的,必须经过接口。 这是由于这是由于CPUCPU的数据线是外设或存储器和的数据线是外设或存储器和CPUCPU进行数据传输的进行数据传输的唯一公共通道,为了使数据线的使用对象不产生使用总线的冲突,唯一公共通道,为了使数据线的使用对象不产生使用总线的冲突,以及快速的以及快速的CPUCPU和慢速的外设时间上协调,和慢速的外设时间上协调,CPUCPU和外设之间必须有和外设之间必须有接口电路(简称接口或接口电路(简称接口或I/OI/O口),接口起着缓冲、锁存数据,地口),接口起着缓冲、锁存数据,地址译码、信息格式转换、传递状态(外设状态),发布命令等功址译码、信息格式转换、传递状态(外设状态),发布命令等功能。能。CPU输入接口输入接口输入设备输入设备输出接口输出接口输出设备输出设备图图3.13.1输入接口和输出接口输入接口和输出接口第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程I/OI/O接口种类接口种类:I/OI/O接口有并接口有并行接口、串行接口、定时行接口、串行接口、定时/ /计计数器、数器、A/DA/D、D/AD/A等,根据外等,根据外设的不同情况和要求选择不设的不同情况和要求选择不同的接口。单片机已将这些同的接口。单片机已将这些接口作在内部,无需外加接接口作在内部,无需外加接口,外设可直接接于单片机口,外设可直接接于单片机(有时需加驱动)本章介绍(有时需加驱动)本章介绍单片机的并行接口,用于和单片机的并行接口,用于和外设的并行数据通信。外设的并行数据通信。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程3.1 单片机的并行单片机的并行IO端口端口3.1.1 PO3.1.1 POP3P3端口结构和功能端口结构和功能一、一、 并行并行IOIO端口结构端口结构 MCS-51单片机有单片机有P0、P1、P2、P3四个四个8位双向位双向I/O口,每口,每个端口可以按字节输入或输出,也可以按位进行输入或输出,个端口可以按字节输入或输出,也可以按位进行输入或输出,四个口共四个口共32根口线,用作位控制十分方便。根口线,用作位控制十分方便。P0口为三态双向口为三态双向口,能带口,能带8个个TTL电路;电路;P1、P2、P3口为准双向口,负载能口为准双向口,负载能力为力为4个个TTL电路。电路。 MCS-51系列单片机系列单片机4个个I/O端口线路设计非常巧妙,学习端口线路设计非常巧妙,学习I/O端口逻辑电路,不仅有利于正确合理地使用端口,而且会端口逻辑电路,不仅有利于正确合理地使用端口,而且会给设计单片机外围电路有所启示。给设计单片机外围电路有所启示。二、二、 POPOP3P3接接口功能口功能 大多数口线都有双重功能,具体介绍如下:大多数口线都有双重功能,具体介绍如下:第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程POPO口口: 1.1.作为输入作为输入/ /输出口。输出口。 2.2.作为地址作为地址/ /数据总线数据总线 , ,接外围芯片时接外围芯片时POPO口分时输出低口分时输出低 8 8 位地址与数据信号。位地址与数据信号。P P1 1口口:1.1.作为作为输入输入/ /输出口。输出口。 2.2.在增强型在增强型(52(52系列系列) )和和ISPISP型型( (在系统编程型在系统编程型) )中有如下中有如下功能功能: : P1.0 T2 P1.0 T2引脚引脚, ,定时定时/ /计数器计数器2 2外部计数脉冲输入外部计数脉冲输入 P1.1 T2EXP1.1 T2EX引脚引脚, ,定时定时/ /计数器计数器2 2触发和方向控制触发和方向控制 P1.5 P1.5 MOSIMOSI引脚引脚, ,在系统编程数据输入在系统编程数据输入 P1.6 P1.6 MISOMISO引脚引脚, ,在系统编程数据输出在系统编程数据输出 P1.7 P1.7 SCKSCK引脚引脚, ,在系统编程时钟输入在系统编程时钟输入第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程P2P2口口:1.1.作为输入作为输入/ /输出口。输出口。 2.2.作为高作为高8 8位地址总线。位地址总线。 P3P3口口:P3P3口为双功能口为双功能 1.1.作第一功能使用时,其功能为输入作第一功能使用时,其功能为输入/ /输出口。输出口。 2.2.作第二功能使用时,每一位功能定义如下表作第二功能使用时,每一位功能定义如下表所示所示: : 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程RD (外部数据存储器读选通信号输入)(外部数据存储器读选通信号输入) P3.7 P3.7 WR (外部数据存储器写选通信号输入)(外部数据存储器写选通信号输入)P3.6 P3.6 T1 T1 (定时器(定时器1 1外部计数脉冲输入)外部计数脉冲输入)P3.5 P3.5 T0 T0 (定时器(定时器0 0外部计数脉冲输入)外部计数脉冲输入)P3.4 P3.4 P3.3 P3.3 P3.2 P3.2 TXD TXD (串行输出线)(串行输出线)P3.1 P3.1 RXD RXD (串行输入线)(串行输入线) P3.0 P3.0 第第 二二 功功 能能 端口引脚端口引脚 INT0 INT0(外部中断外部中断0 0输入线)输入线)INT1 INT1 (外部中断外部中断1 1输入线)输入线) 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 3.1.2 3.1.2 端口的工作原理端口的工作原理 四个端口的口线逻辑电路见下图四个端口的口线逻辑电路见下图3.23.2图图3.53.5,由图可,由图可见,四个端口的口线逻辑图有相同之处:见,四个端口的口线逻辑图有相同之处: 依据每个端口的不同功能,口线逻辑结构亦有不同之处,依据每个端口的不同功能,口线逻辑结构亦有不同之处,以下重点介绍不同之处。以下重点介绍不同之处。 都有两个输入缓冲器,分别受内部读锁存器和读引脚控制信都有两个输入缓冲器,分别受内部读锁存器和读引脚控制信 号的控制。号的控制。都有锁存器都有锁存器( (即专用寄存器即专用寄存器POPOP3)P3)都是场效应管输出驱动。都是场效应管输出驱动。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程1.PO1.PO口口 POPO口的输出驱动电路由上拉场效应管口的输出驱动电路由上拉场效应管T1T1和驱动场效应和驱动场效应T2T2组成,控制电路包括一个与门,组成,控制电路包括一个与门, 一个非门和一个模拟开关一个非门和一个模拟开关MUXMUX。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 POPO作作I/OI/O口使用口使用 CPUCPU发控制电平发控制电平“0 0”封锁与门,使封锁与门,使T1T1管截止,同时使管截止,同时使MUXMUX开关同下面的触点接通,使锁存器的开关同下面的触点接通,使锁存器的 Q Q 与与T2T2栅极接通。栅极接通。 当当CPUCPU向端口输出数据时,写脉冲加在锁存器的向端口输出数据时,写脉冲加在锁存器的 CLCL上、上、内部总线的数据经反相,再经内部总线的数据经反相,再经T2T2管反相,管反相,POPO口的这一位引口的这一位引脚上出现正好和内部总线同相的数据脚上出现正好和内部总线同相的数据。由于输出驱动级是由于输出驱动级是漏极开路电路漏极开路电路( (因因T1T1截止截止) ),在作,在作I/OI/O口使用时应外接口使用时应外接10K10K的的上拉电阻。上拉电阻。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 当输入操作时,端口中两个三态缓冲器用于读操作。当输入操作时,端口中两个三态缓冲器用于读操作。缓冲器缓冲器2 2用于读端口引脚的数据。当执行端口读指令时,读用于读端口引脚的数据。当执行端口读指令时,读引脚脉冲打开三态缓冲器引脚脉冲打开三态缓冲器2 2,于是端口引脚数据经三态缓冲,于是端口引脚数据经三态缓冲器器2 2送到内部总线。缓冲器送到内部总线。缓冲器1 1用于读取锁存器用于读取锁存器Q Q端的数据。当端的数据。当执行执行“读读- -修改修改- -写写”指令指令( (即读端口信息,在片内加以运算即读端口信息,在片内加以运算修改后,再输出到该端口的某些指令如:修改后,再输出到该端口的某些指令如:ANL POANL PO,A A指令指令) ),即是读的锁存器即是读的锁存器Q Q的数据。的数据。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 这是为了避免错读引脚的电平信号,例如用一根口线去这是为了避免错读引脚的电平信号,例如用一根口线去驱动一个晶体管基极,当向口线写驱动一个晶体管基极,当向口线写“1 1”,晶体管导通,导通,晶体管导通,导通的的PNPN结会把引脚的电平拉低,如读引脚数据,则会读为结会把引脚的电平拉低,如读引脚数据,则会读为0 0 ,而实际上原口线的数据为而实际上原口线的数据为1 1。因而采用读锁存器。因而采用读锁存器Q Q的值而避免的值而避免了错读。究竟是读引脚还是读了错读。究竟是读引脚还是读 锁存器,锁存器,CPUCPU内部会自行判断内部会自行判断是发读引脚脉冲还是读锁存器脉冲,读者不必在意。是发读引脚脉冲还是读锁存器脉冲,读者不必在意。 应注意应注意:当作输入端口使用时,应先对该口写入:当作输入端口使用时,应先对该口写入“1 1”使使场效应管场效应管T2T2截止,再进行读入操作,以防场效应管处于导通截止,再进行读入操作,以防场效应管处于导通状态,使引脚箝位到零,而引起误读。状态,使引脚箝位到零,而引起误读。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 当当POPO口作地址口作地址/ /数据线使用时数据线使用时,CPUCPU及内部控制信号为及内部控制信号为“1 1”,转换开关,转换开关MUXMUX打向上面的触点,打向上面的触点, 使反相器的输出端使反相器的输出端和和T2T2管栅极接通,输出的地址或数据信号通过与门驱动管栅极接通,输出的地址或数据信号通过与门驱动T1T1管,同时通过反相器驱动管,同时通过反相器驱动T2T2管完成信息传送,数据输入时,管完成信息传送,数据输入时,通过缓冲器进入内部总线。通过缓冲器进入内部总线。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 P1P1口作通用口作通用I/OI/O口使用,因电路结构上输出驱动部分接口使用,因电路结构上输出驱动部分接有上拉电阻。当作输入时,同有上拉电阻。当作输入时,同POPO一样,一样, 要先对该口写要先对该口写“1 1”。 2.P12.P1口口 P1P1口的结构见下图口的结构见下图第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程3.P23.P2口口 P2P2口的位结构比口的位结构比P1P1多了一个转换控制部分,当多了一个转换控制部分,当P2P2口作通口作通用用I/OI/O口时,多路开关口时,多路开关MUXMUX倒向左;倒向左;第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 当扩展片外存贮器时,当扩展片外存贮器时,MUXMUX开关打向右,开关打向右,P2P2口作高八位地口作高八位地址线输出高八位地址信号。址线输出高八位地址信号。 其其MUXMUX的的倒向是受的的倒向是受CPUCPU内部控制的。内部控制的。 应当注意应当注意:当:当P2P2口的几位作地址线使用时,剩下的口的几位作地址线使用时,剩下的P2P2口口线不能作线不能作I /OI /O口线使用。口线使用。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程4.P34.P3口口 P3P3口口 P3P3口为双功能口为双功能I/OI/O口,内部结构中增加了第二输入口,内部结构中增加了第二输入/ /输出输出功能。功能。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 当作为普通当作为普通I/OI/O口使用时,第二输出功能端保持口使用时,第二输出功能端保持“1 1”,打开与非门打开与非门3 3,用法同,用法同P1P1口。口。 当作第二功能输出时,锁存器输出为当作第二功能输出时,锁存器输出为“1 1”打开与非门打开与非门3 3,第二功能内容通过与非门第二功能内容通过与非门3 3和和T T送至引脚。送至引脚。 输入时,引脚的第二功能信号通过三态缓冲器输入时,引脚的第二功能信号通过三态缓冲器4 4进入第二进入第二输入功能端。两种功能的引脚输入都应使输入功能端。两种功能的引脚输入都应使T T截止,此时第截止,此时第 二二输出功能端和锁存器输出端输出功能端和锁存器输出端Q Q均为高电平。均为高电平。 P3P3的各位如不设定为第二功能则自动处于第一功能,在的各位如不设定为第二功能则自动处于第一功能,在更多情况下,根据需要,更多情况下,根据需要, 把几条口线设为第二功能,剩下把几条口线设为第二功能,剩下的口线可作第一功能的口线可作第一功能(I/O)(I/O)使用,此时,宜采用位操作形式使用,此时,宜采用位操作形式 。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程归纳四个并行口使用的注意事项如下:归纳四个并行口使用的注意事项如下:1.1.如果单片机内部有程序存储器,不需要扩展外部存储器和如果单片机内部有程序存储器,不需要扩展外部存储器和I/OI/O接口,单片机的四个口均可作接口,单片机的四个口均可作I/OI/O口使用。口使用。2.2.四个口在作输入口使用时,均应先对其写四个口在作输入口使用时,均应先对其写“1 1”,以避免误读。,以避免误读。3.3.P0P0口作口作I/OI/O口使用时应外接口使用时应外接10K10K的的上拉电阻上拉电阻,其它口则可不必。,其它口则可不必。4.4.P2P2可某几根线作地址使用时,剩下的线不能作可某几根线作地址使用时,剩下的线不能作I/OI/O口线使用。口线使用。5.5.P3P3口的某些口线作第二功能时,剩下的口线可以单独作口的某些口线作第二功能时,剩下的口线可以单独作I/OI/O口线使用。口线使用。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程3.2 单片机单片机C51语言程序语言程序3.2.1 单片机C51语言程序的结构与数据类型一、 一个简单的C语言程序 #include /包含头文件 void Delay_Ms(uint ms);/延时函数声明 /*函数名称:main*/void main() while(1) P1=0 xff;/将P1口的八位引脚置1,熄灭八个LED Delay_Ms(1000);/延时 P1=0 x00;/将P1口的八位引脚清0,点亮八个LED Delay_Ms(500);/延时 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程/* 函数名称:Delay_Ms函数功能:延时ms级别输入参数:要延时的ms数输出参数:无 */void Delay_Ms(uint ms)/延时函数,变量ms为形式参数 uchar i; /定义无符号字符型变量i while(ms-) /双重循环语句实现软件延时 for(i=0;i200;i+); 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程二、单片机二、单片机C51C51语言程序基本结构语言程序基本结构 同标准同标准C C一样,一样,C51C51的程序由一个个函数组成,这里的函的程序由一个个函数组成,这里的函数和其他语言的数和其他语言的“子程序子程序”或或“过程过程 ”具有相同的意义。具有相同的意义。其中必须有一个主函数其中必须有一个主函数main()main(),程序的执行从,程序的执行从main()main()函数开函数开始,调用其始,调用其 他函数后返回主函数他函数后返回主函数main()main(),最后在主函数中,最后在主函数中结束整个程序而不管函数的排列顺序如何。结束整个程序而不管函数的排列顺序如何。 值得注意的是:值得注意的是:如果被调函数出现在主调函数之后,在主调如果被调函数出现在主调函数之后,在主调函数前应对被调函数作以说明,形式为:函数前应对被调函数作以说明,形式为: 返回值类型返回值类型 被调函数名被调函数名( (形参表列形参表列) ); 如果被调函数出现在主调函数之前,可以不对被调函数说明。如果被调函数出现在主调函数之前,可以不对被调函数说明。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程C语言程序的组成结构如下所示语言程序的组成结构如下所示: 全局变量说明全局变量说明 /*可被各函数引用可被各函数引用*/ main() /*主函数主函数*/ 局部变量说明局部变量说明 /*只在本函数引用只在本函数引用*/ 执行语句执行语句(包括函数调用语句包括函数调用语句) fun1(形式参数表形式参数表) /*函数函数1*/ 形式参数说明形式参数说明 局部变量说明局部变量说明 执行语句执行语句(包括调用其他函数语句包括调用其他函数语句)funn(形式参数表形式参数表) /*函数函数n*/形式参数说明形式参数说明 局部变量说明局部变量说明 执行语句执行语句第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程C语言的语句规则语言的语句规则: 每个变量必须先说明后引用每个变量必须先说明后引用,变量名英文大小写是有差别的。变量名英文大小写是有差别的。 C语言程序一行可以书写多条语句,但每个语句必须以语言程序一行可以书写多条语句,但每个语句必须以“;”结尾,一个语句也可以多行书写为好。结尾,一个语句也可以多行书写为好。 3. C语言的注释用语言的注释用/*/表示。表示。 4. “”花括号必须成对,位置随意,可在紧挨函数名后,也可花括号必须成对,位置随意,可在紧挨函数名后,也可另起一行,多个花括号可以同行书写,也可逐行书写,为层次另起一行,多个花括号可以同行书写,也可逐行书写,为层次分明,增加可读性,同一层的分明,增加可读性,同一层的“”花括号对齐,采用逐层缩进花括号对齐,采用逐层缩进1.1.方式书写。方式书写。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程三、三、 C51 C51的数据类型的数据类型 C51的数据有常量和变量之分的数据有常量和变量之分 常量常量:在程序运行中其值不变的量,可以为字符,十进制数或十:在程序运行中其值不变的量,可以为字符,十进制数或十 六进制数六进制数(用用0 x表示表示) 。 常量分为数值型常量和符号型常量,如果是符号型常量常量分为数值型常量和符号型常量,如果是符号型常量,需用宏定义指令需用宏定义指令(#define)对其进行定义对其进行定义(相当于汇编的相当于汇编的“EQU”伪指令伪指令)如:如: #define PI 3.1415 那么程序中只要出现那么程序中只要出现PI的地方,编译程序都译为的地方,编译程序都译为3.1415。 变量变量:在程序运行中其值可以改变的量。:在程序运行中其值可以改变的量。 一个变量由变量名和变量值构成,变量名即是存储单元地址一个变量由变量名和变量值构成,变量名即是存储单元地址的符号表示,而变量的值就是该单元存放的内容。定义一个的符号表示,而变量的值就是该单元存放的内容。定义一个变量,编译系统就会自动为它安排一个存储单元,具体的地变量,编译系统就会自动为它安排一个存储单元,具体的地址值用户不必在意。址值用户不必在意。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程C51变量的数据类型变量的数据类型 无论哪种数据都是存放在存储单元中的,每一个数无论哪种数据都是存放在存储单元中的,每一个数据究竟要占用几个单元据究竟要占用几个单元(即数据的长度即数据的长度)都要提供给编译系都要提供给编译系统,正如汇编语言中存放数据的单元要用统,正如汇编语言中存放数据的单元要用DB或或DW伪指伪指令进行定义一样,编译系统以此为根据预留存贮单元,令进行定义一样,编译系统以此为根据预留存贮单元,这就是定义数据类型的意义这就是定义数据类型的意义.C51编译器支持数据类型见编译器支持数据类型见表表3-1。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程表表3-1 C51的数据类型的数据类型 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程对表对表3-1作如下说明:作如下说明: 1. 字符型字符型(char)、整型、整型(int)和长整型和长整型(long)均有符号型均有符号型(signed)和无符号型和无符号型(unsigned)两种,如果不是必须,尽两种,如果不是必须,尽可能选择可能选择unsigned型,这将会使编译器省却符号位的检型,这将会使编译器省却符号位的检测,使生成的程序代码比测,使生成的程序代码比signed类型短得多。类型短得多。 2. 程序编译时,程序编译时,C51编译器会自动进行类型转换,例如编译器会自动进行类型转换,例如将一个位变量赋值给一个整型变量时,位型值自动转换将一个位变量赋值给一个整型变量时,位型值自动转换为整型值;当运算符两边为不同类型的数据时,编译器为整型值;当运算符两边为不同类型的数据时,编译器先将低级的数据类型转换为较高级的数据类型,运算后,先将低级的数据类型转换为较高级的数据类型,运算后,运算结果为高级数据类型。运算结果为高级数据类型。 3. 51单片机内部数据存储器的可寻址位单片机内部数据存储器的可寻址位(20H2FH)定定义为义为bit型,而特殊功能寄存器的可寻址位型,而特殊功能寄存器的可寻址位(即地址为即地址为X0H和和X8H的的SFR的各位的各位)只能定义为只能定义为sbit类型。类型。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程四、四、 数据的存储类型数据的存储类型 C51是面向是面向8XX51系列单片机及硬件控制系统的开发语系列单片机及硬件控制系统的开发语言,它定义的任何变量必须以一定的存储类型的方式定位言,它定义的任何变量必须以一定的存储类型的方式定位在在8XX51的某一存储区中,否则便没有意义。因此在定义的某一存储区中,否则便没有意义。因此在定义变量类型时,还必须定义它的存储类型,变量类型时,还必须定义它的存储类型,C51的变量的存的变量的存储类型如表储类型如表3-2所示:所示: 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程表表3-2 C51的变量的存贮类型的变量的存贮类型 访问内部数据存储器访问内部数据存储器(idata)比访问外部数据存贮器比访问外部数据存贮器(xdata)相对要快一些,因此,可将经常使用的变量置于内部数据存相对要快一些,因此,可将经常使用的变量置于内部数据存储器中,而将较大及很少使用的数据变量置于外部数据存贮储器中,而将较大及很少使用的数据变量置于外部数据存贮器中。例如定义变量器中。例如定义变量x语句:语句:data char x (等价于等价于char data x)。如果用户不对变量的存储类型定义,则编译器承认默认存储如果用户不对变量的存储类型定义,则编译器承认默认存储类型,默认的存储类型由编译控制命令的存储的模式部分决类型,默认的存储类型由编译控制命令的存储的模式部分决定。定。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程指针指针:存储单元地址,存储这个地址的变量称为:存储单元地址,存储这个地址的变量称为指针变量指针变量。1.1.指针变量指针变量 在汇编语言程序中,要取存储单元在汇编语言程序中,要取存储单元m m的内容可用直接寻址方的内容可用直接寻址方式,也可用寄存器间接寻址方式式,也可用寄存器间接寻址方式 ,如果用,如果用R1R1寄存器指示寄存器指示m m的地址的地址,用,用R1R1就是取就是取m m单元的内容。相对应的在单元的内容。相对应的在C C语言中可用变量名表语言中可用变量名表示取变量的值示取变量的值( (相当于直接寻址相当于直接寻址) ),也可用另一个变量,也可用另一个变量( (如如P)P)存放存放m m的地址,的地址,P P就相当于就相当于R1R1寄存器寄存器 。用。用* *P P取得取得m m单元的内容单元的内容( (相当于汇相当于汇编的间接寻址方式编的间接寻址方式) )这里这里P P即为指针型变量。即为指针型变量。五、指针五、指针第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程直接寻址 间接寻址汇编语言 C 语言 汇编语言C 语言MOV n,m 传送语句 n=m; 赋值语句MOV R1,#m; m的地址送R1MOV n,R1 ;m的内容送n P=&m;;/*m的地址P*/n=*P;; /*m的内容n*/注:汇编语言程序中对符号地址注:汇编语言程序中对符号地址n n和和m m需用需用EQUEQU伪指令进行地址伪指令进行地址定义定义C C语言应对变量语言应对变量n n、m m和指针变量和指针变量P P需进行类型定义。表需进行类型定义。表中中& &为取地址运算符,为取地址运算符,* *为取内容运算符。为取内容运算符。 汇编语言和C语言对照:第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程2. 指针型变量的类型指针型变量的类型 由于由于C51C51是结合是结合5151单片机硬件的,单片机硬件的,5151单片机的不同存储空单片机的不同存储空间,有不同的地址范围,即使对于同一外部数据存储器,又间,有不同的地址范围,即使对于同一外部数据存储器,又有用有用RiRi分页寻址分页寻址(Ri(Ri为八位为八位) )和用和用DPTRDPTR寻址寻址(DPTR(DPTR为十六位为十六位) )两种寻址方式。两种寻址方式。 指针是指示变量地址的,因此,在指针类型的定义中要指针是指示变量地址的,因此,在指针类型的定义中要说明说明被指的变量的数据类型和存储类型被指的变量的数据类型和存储类型。同时指针变量本身。同时指针变量本身也是一个变量,有它存放的存储区和数据长度。即也是一个变量,有它存放的存储区和数据长度。即指针变量指针变量本身有它的存储类型和数据长度,其数据长度是由被指的变本身有它的存储类型和数据长度,其数据长度是由被指的变量的存储类型而定的。量的存储类型而定的。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程n指针变量存储类型:指针变量存储类型: data 表示指针指向内部表示指针指向内部128B RAM idata 表示指针指向内部表示指针指向内部 256B RAM pdata 表示指针指向表示指针指向 Ri 间址的外部间址的外部RAM; 以上均为八位地址指示,所以指针长度为以上均为八位地址指示,所以指针长度为1 Byte. code 表示指针指向外部程序存贮器。表示指针指向外部程序存贮器。 xdata 表示指针指向外部数据存贮器。表示指针指向外部数据存贮器。 这些均为十六位地址指示,所以指针长度为这些均为十六位地址指示,所以指针长度为2 Byte.n指针变量的数据类型指针变量的数据类型 同样有同样有char、 int、long等等 表示指针指向的数据的长度是占一个单元、两个单元还是表示指针指向的数据的长度是占一个单元、两个单元还是4个单个单元。元。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 如果指针的存储类型缺省,指针定义为通用型指针如果指针的存储类型缺省,指针定义为通用型指针, ,表示表示指针可指向任何存储空间,此时指针长度为指针可指向任何存储空间,此时指针长度为3 3字节。字节。第一字节第二字节第三字节存储类型编码所指地址的高八位所指地址的低八位存器类型idataxdatapdatadatacode编 码12345通用型指针的存储类型编码如下:例如指针变量例如指针变量pxpx值为值为0 x021203 0 x021203 即指针指向即指针指向xdata xdata 区的区的1203H1203H地址单元地址单元。第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程 (2)被指数据类型)被指数据类型 被指存储类型被指存储类型 *指针变量存储类型指针变量存储类型 指针变量指针变量 例如例如 long code * xdata px; /*和上面定义等同和上面定义等同*/px为指针型为指针型变量变量被指向的被指向的存储器的存储器的数据类型数据类型为长型为长型px指向程指向程存储器存储器px自身在外自身在外部数据存储部数据存储器中器中longxdatacode*px;(1) 指针变量存储类型指针变量存储类型 被指数据类型被指数据类型 被指存贮类型被指存贮类型 * *指针变量名指针变量名( 其中其中 为可选项为可选项 )如:)如:3. 指针变量说明举例指针变量说明举例第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程在上例的指针声明中包含如下几个内容:在上例的指针声明中包含如下几个内容: 1) 指针变量名指针变量名(如如px)前面冠以前面冠以“*”,表示表示px为指针型变量,此处为指针型变量,此处*不带不带取内容之意。取内容之意。 2) 指针指向的存储类型,即指向哪个存储区,它决定了指针本身的长指针指向的存储类型,即指向哪个存储区,它决定了指针本身的长度度(见表见表3-1)。存储类型声明的位置在数据类型和指针名。存储类型声明的位置在数据类型和指针名(如如*px)之间,之间,如无此项声明,则此指针型变量为通用型。如无此项声明,则此指针型变量为通用型。 3) 指针指向的存储区的数据类型,即被指向的存储区以多少个单元作指针指向的存储区的数据类型,即被指向的存储区以多少个单元作一个数据单位,当程序通过指针对该区操作时,将按此规定的单元个数一个数据单位,当程序通过指针对该区操作时,将按此规定的单元个数的内容作为一个数据操作。的内容作为一个数据操作。 4) 指针变量自身的存储类型,即指针处于什么区与自身的长度无关,指针变量自身的存储类型,即指针处于什么区与自身的长度无关,该声明可位于声明语句的开头,也可在该声明可位于声明语句的开头,也可在“*”和变量名之间。此项由编和变量名之间。此项由编译模式放在默认区,如无规定编译模式,通常在译模式放在默认区,如无规定编译模式,通常在data区。区。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程long xdata *px;char xdata *data pd;data char xdata *pd; int *pn;/*指针指针px指向指向long型型xdata区区(每个数据占四个单元,指针每个数据占四个单元,指针自身在默认存储器自身在默认存储器(如不指定编译模式在如不指定编译模式在data区区),指针长,指针长度为度为2个字节个字节*/*指针指针pd指向字符型指向字符型xdata区,自身在区,自身在data区,长度区,长度2字字 节节*/*与上例等效与上例等效*/ / /* *定义一个类型为定义一个类型为intint型的通用型指针,指针自身在型的通用型指针,指针自身在datadata区长度为区长度为3 3字节字节* */ / main() char xdata *ap; ap=0 x0010; *ap=50;main() int xdata *ap; ap=0 x0010; *ap=0 x3650;第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程六、六、C51C51对对SFRSFR、可寻址位、存储器和、可寻址位、存储器和I/OI/O口的定义口的定义 1.特殊功能寄存器特殊功能寄存器SFR定义定义 C51提供了一种自主形式的定义方式,使用特定关键字提供了一种自主形式的定义方式,使用特定关键字sfr 如如 sfr SCON=0 x98; /*串行通信控制寄存器地址串行通信控制寄存器地址98H*/ sfr TMOD=0 x89; /*定时器模式控制寄存器地址定时器模式控制寄存器地址89H*/ sfr ACC=0 xe0; /*A累加器地址累加器地址E0H*/ sfr P1=0 x90; /*P1端口地址端口地址90H*/ 定义了以后,程序中就可以直接引用寄存器名。定义了以后,程序中就可以直接引用寄存器名。 C51也建立了一个头文件也建立了一个头文件reg51.h (增强型为增强型为reg52.h),在该,在该文件中对所有的特殊功能寄存器的进行了文件中对所有的特殊功能寄存器的进行了sfr定义,定义, 对特殊对特殊功能寄存器的有位名称的可寻址位进行了功能寄存器的有位名称的可寻址位进行了sbit定义,因此,定义,因此,只要用包含语句只要用包含语句#include,就可以直接引用特殊功,就可以直接引用特殊功能寄存器名,或直接引用位名称。能寄存器名,或直接引用位名称。要特别注意要特别注意:在引用:在引用 时特殊功能寄存器或者位名称必须大写。时特殊功能寄存器或者位名称必须大写。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程2.2.对位变量的定义对位变量的定义 C51对位变量的定义有三种方法:对位变量的定义有三种方法: (1)将变量用)将变量用bit类型的定义符定义为类型的定义符定义为bit类型类型: 如如 bit mn; mn为位变量,其值只能是为位变量,其值只能是“0”或或“1”,其位地址,其位地址C51自行安自行安排在可位寻址区的排在可位寻址区的bdata区。区。 (2)采用字节寻址变量)采用字节寻址变量.位的方法位的方法: 如如 bdata int ibase; /*ibase定义为整型变量定义为整型变量*/ sbit mybit=ibase15; /*mybit定义为定义为ibase的的D15位位*/ 这里位是运算符这里位是运算符“”相当于汇编中的相当于汇编中的“”,其后的最大,其后的最大取值依赖于该位所在的字节寻址变量的定义类型,如定义为取值依赖于该位所在的字节寻址变量的定义类型,如定义为char最大值只能为最大值只能为7。 第三章第三章 并行并行IOIO口口P0P3P0P3及及C51C51编程编程(3) 对特殊功能寄存器的位的定义对特殊功能寄存器的位的定义 方法方法1:使用头文件及:使用头文件及sbit定义符;多用于无位名的可寻址位。定义符;多用于无位名的可寻址位。 例如例如 #include sbit P1-1=P11; /*P1-1为为P1口的第口的第1位位*/ sbit ac=ACC7; /*ac定义为累加器定义为累加器A的第的第7位位*/ 方法方法2:使用头文件:使用头文件reg51.h,再直接用位名称。,再直接用位名称。 例如例如 #include RS1=1; RS0=0; 方法方法3:用字节地址位表示:用字节地址位表示 例如例如 sbit OV=0 xD02; 方法方法4:用寄存器名:用寄存器名.位定义位定义 例如例如 sfr PSW=0 xd0; /*定义定义PSW地址为地址为d0H*/ sbit CY=PSW7; /*CY为为PSW7*/ 第三

    注意事项

    本文(第3章并行IO端口及C51编程ppt课件.ppt)为本站会员(春哥&#****71;)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开