- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【例12-1】将Pl.0输入的位直接由Pl.1口输出。 此例程序说明如何对I/O口位进行读写操作,在实际应用中可对输入信号处理后再由Pl.1输出。程序清单如下: #includeREGX51.H void main(void) { P1_0=1; while(1) /*循环读Pl.0并送至Pl.1*/ { Pl_1=Pl_0; } } 【例12-2】 发光二极管流水灯程序 设计发光二极管流水灯,硬件电路如图12-9所示,八个发光二极管L1-L8分别接在单片机的P1.0-P1.7接口上,输出逻辑“0”时,发光二极管亮,输出逻辑“1”时,发光二极管灭。发光二极管从L1到L8循环点亮,并不断重复循环。 本例程目的是练习写单片机的I/O口。通过练习,理解如何编程发出逻辑信息,并控制外围电路。 编程方法:当控制信号为低电平时,发光二极管亮,为高电平时,发光二极熄灭。 参考程序清单: #includeREGX51.H /*1ms延时子程序-----*/ void Delay_xMs(unsigned int x) { unsigned int i,j; for( i =0;i x;i++ ) { for( j =0;j500;j++ ); } } ? /*主程序,实现LED灯闪烁,亮1秒灭1秒*/ void main() { unsigned char a; while(1) { P1=0xfe; for(i=0;i8;i++) { Delay_xMs (1000); //延时1秒钟 a= (a1)+1; //设置二极管第几个亮 P1=a; //LED 发光二极管亮 } } } ?12.3.2 中断系统C语言编程的应用 C51编译器支持在C语言源程序中直接编写51单片机的中断服务函数程序,从而减轻了采用汇编语言编写中断服务程序的繁琐程度。为了能在C语言源程序中直接编写中断服务函数,C51编译器对函数的定义有所扩展,增加了一个扩展关键字interrupt。关键字interrupt是函数定义时的一个选项,加上这个选项即可以将函数定义成中断服务函数。 定义中断服务函数的一般形式为: 函数类型 函数名(形式参数表) interrupt n [using m] { /* ISR */ } ●interrupt后面的n是中断编号,n的取值范围为0~31。编译器从8n+3处产生中断向量,具体的中断号n和中断向量取决于不同的51系列单片机芯片。51单片机的常用中断源和中断向量如表12-5所示。 ●m用来选择5l单片机中不同的工作寄存器组。单片机RAM中使用4个不同的工作寄存器组,m分别选中4个不同的工作寄存器组。如果不用该选项,则由编译器选第一个寄存器组作绝对寄存器组访问。 ●使用C51编写中断程序,需要在主程序中初始化中断系统,再单独编写中断服务函数,其基本步骤如下: ①设置IE寄存器,置位相应中断源的中断允许标志及EA,使能相关中断,此项必须有; ②设置IP寄存器,设定所用中断源的中断优先级。此项可选,可以不设置; ③对外部中断应设定中断请求信号形式,设置寄存器TCON的IT0、IT1项,确定低电平触发或脉冲下降沿触发。 ④如果是定时器/计数器中断或串口中断,对于定时/计数中断应设置工作方式(定时/计数)。 ⑤单独编写中断服务函数,此项必须有。 【例12-3】电路如图12-10所示,首先通过P1.7口点亮发光二极管,然后通过外部按键输入一脉冲串。编程要求对P1.7引脚上的脉冲进行计数,发光二极管交替亮、暗发光。 参考程序如下: #include REGX51.H //包括一个51标准内核的头文件 unsigned char counter=0;//计数 void int0() interrupt 0 using 3//外中断0 { P1_7=!P1_7; //在中断里控制LED交替亮、暗 counter++;//脉冲进行计数 } ?void main(void) // 主程序 { IE=Ox81; //使能外中断0 IT0=1; //脉冲下降沿触发外中断 P1_7=0; //开始点亮发光二极管 while(1); //主程序循环 } ?12.3.3 定时器/计数器C语言编程的应用 C51对定时器/计数器的编程过程可分为查询法和中断法。编程需要考虑下面问题: 其一,是否需要中断。定时器/计数器在计数溢出时可以产生中断,如果需要中断,则设置IE寄存器,使能对应的定时器
您可能关注的文档
- 竣工验收工作是全面总结考核建设成果竣工验收工作是全面总结和考核建设成果.doc
- 空调系统风险评估(FMA五分制法)空调系统风险评估(FMEA五分制法).doc
- 竣工验收资料汇编 五方告报告.doc
- 笔记本学习计划十七笔记学习计划十七.doc
- 竞赛专题 函数问题的型与方法竞赛专题 函数问题的题型与方法.doc
- 第 章 投标文件格式 章 投标文件格式.doc
- 第 33 讲 简单的线规划及应用第 33 讲 简单的线性规划及应用.doc
- 第01章 管理经济学绪论)(已排)第01章 管理经济学(绪论)(已排).ppt
- 竣工资料管理制度要求 程部资料室竣工资料管理制度要求 工程部资料室.doc
- 第01章 液压与气压传概述动概述.ppt
最近下载
- 10万吨有色冶炼废物资源综合利用项目环境影响报告书(重新报批).pdf VIP
- 2.4《最后一片叶子》-【中职专用】高一语文(高教版2023·基础模块上册).pptx VIP
- 军事历史(空军工程大学)网课章节测试答案.pdf
- 案例25-李娟利等与张波集资房买卖的合同 纠纷上诉案.docx VIP
- MAYA灯光材质渲染.ppt VIP
- 中西文化对比提升学生视野教学研究课题报告.docx
- 《材质与灯光渲染》教学大纲.docx VIP
- 《角色绑定与动画》教学大纲.docx VIP
- 高标准农田建设项目复核审计服务115页.docx VIP
- 临床输血操作技术规范、输血制度(2025版).pptx VIP
原创力文档


文档评论(0)