C单片机的C语言程序设计祥解.pptVIP

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * 2 I/O 端口的位操作指令 由于I/O 端口具有位寻址功能,因此有关位操作的指令也都 适用于它们。 sfr P1 = 0x90; //P1的SFR定义 sbit DIPswitch = P1^4; //定义P1口位4为DIP开关输入 sbit greenLED = P1^5; //定义P1口位5为LED输出 …… If (DIPswitch = = 1 ) //检查P1.4输入是否为高 { greenLED = 0; //置P1.5输出为低,LED灭 } else //若P1.4输入是否为低 { greenLED = 1; //置P1.5输出为高,LED亮 } * * 【例】 利用单片机的P1.4~P1.7 接4 个发光二极管,P1.0~P1.3 接4 个开关,要求当开关动作时,对应(低位对低位,即P1.0对应P1.4、P1.1对应P1.5…)的发光二极管亮或灭,请编程实现。 3 并行口(字节寻址)应用举例 * * 汇编参考程序如下: ORG 0000H LJMP LOOP ORG 0060H LOOP: MOV P1,#0FH ;设定P1 端口低4 位为输入状态 MOV A,P1 SWAP A MOV P1,A SJMP LOOP C51 参考程序如下: #include reg51.h #include stdio.h sfr P1 = 0x90; void main (void) { for( ; ; ) { P1=0x0F; //设定P1 端口低4 位为输入状态 P1=P14; //左移4 位后再从P1.4~P1.7 引脚输出 } } * * 【例4-32】 根据图4-8 所示电路,设计闪烁亮灯程序,要求8 只发光二极管闪烁点亮,点亮和熄灭时间都为200 ms。 解:根据硬件电路图可知,当P1.x 输出高电平时,LED 灯亮。 * * 汇编参考程序如下: ORG 0000H LJMP LOOP ORG 0060H LOOP:MOV A, #00H MOV P1,A ;熄灭LED LCALL DELAY MOV A, #0FFH LCALL DELAY ;点亮LED SJMP LOOP DELAY: …… ;200ms 延时子程序 * * C51 参考程序如下: #include reg51.h void delay02s(void) //延时0.2s 子程序 { …… } void main (void) { while (1) { P1=0x00; //熄灭LED delay02s( ); P1=0xff; //点亮LED delay02s( ); } } * * 【例4-33】 根据图4-8 所示电路,设计一个程序,在这些LED上显示计数值,从0x00到0xFF(二进制值0000 0000 到 1111 1111),计数时间间隔为1s。 * * 解:汇编参考程序如下: ORG 0000H LJMP START ORG 0060H START:MOV P1, #0 ;熄灭LED LCALL DELAY LOOP: INC P1 ;增量P1 LCALL DELAY ;点亮LED SJMP LOOP DELAY: …… ;1s 延时子程序 * * C51 参考程序如下: #include reg51.h #define LED P1; void delay02s(void) //延时1s { …… } void main (void) { LED = 0; //清零P1 while (1) { LED++; //增量P1 delay02s( ); } } * * 【例4-34】设计一个程序,从P1获取一个字节,等待一段时间,然后将它发送到P2,等待时间间隔为500 ms。 汇编参考程序如下: ORG 0000H LJMP START ORG 0060H START : MOV A,#00H ; 清ACC MOV P1,#FF ; 使P1成为输入 LOOP: MOV A,P1 LCALL DELAY MOV P2,A

您可能关注的文档

文档评论(0)

四娘 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档