欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    内部资源的C编程.ppt

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

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

    内部资源的C编程.ppt

    教学基本要求:(1)、掌握中断应用的C编程方法;(2)、掌握定时器/计数器应用的C编程方法;(3)、熟悉串行口应用的C编程方法;教学重点:(1)、中断应用的C编程;(2)、定时器/计数器应用的C编程;教学难点:(1)、在Keil中如何调试各中断程序;,第二部分 8051内部资源的C编程,一、中断应用的C语言编程,C51编译器支持在C源程序中直接开发中断程序。中断服务程序是通过按规定语法格式定义的一个函数。中断服务程序的函数定义的语法格式如下:返回值 函数名(参数)模式重入 interrupt m using n nterrupt m 其中m是中断号(0到31),中断号告诉编译器中断程序的入口地址,中断号对应着IE寄存器中的使能位。,下表给出了对应关系,在进入中断服务程序前的程序中使用一组工作寄存器,进入中断服务程序后,由“using n”切换到另一组寄存器,中断返回后又恢复到原寄存器组。这样互相切换的两组寄存器中的内容彼此都没有被破坏。为中断程序指定工作寄存器组的缺点是:所有被中断调用的过程都必须使用同一个寄存器组,否则参数传递会发生错误。中断不允许用于外部函数,它对函数目标代码影响如下:当调用函数时,SFR中的ACC,B,DPH,DPL和PSW入栈。如果不使用寄存器组切换,则甚至中断函数所需要的所有工作寄存器都入栈。函数退出前,所有的寄存器内容出栈;函数由8051的指令RETI终止。,例:如图所示是利用优先权解码芯片,在单片机8031的一个外部中断INT1上扩展多个中断源的原理电路图。图中是以开关闭合来模拟中断请求信号。当有任一中断源产生中断请求,能给8031的INT1引脚送一个有效中断信号,由P1的低3位可得对应中断源的中断号。多个中断源的处理。在中断服务程序中仅设置标志,并保存I/O口输入状态。C51编译器提供定义特定80C51系列成员的寄存器头文件。80C51头文件为reg51.h。C51程序如下:,#include unsigned char status;bit flag;void service_int1()interrupt 2 using 2/*INT1中断服务程序,用第2组工作寄存器*/flag=1;/*设置标志*/status=p1;/*存输入口状态*/,void main(void)IP=0 x04;/*置INT1为高优先级中断*/IE=0 x84;/*INT1开中断,CPU开中断*/for(;)if(flag)/*有中断*/switch(status)/*根据中断源分支*/case 0:break;/*处理IN0*/case 1:break;/*处理IN1*/case 2:break;/*处理IN2*/case 3:break;/*处理IN3*/default:;flag=0;/*处理完成清标志*/,例1:在XTAL频率是12MHZ的标准8051器件上,用TIME1(定时器/计数器1)产生10KHz定时器滴答中断。分析:采用TIME1的工作模式2,则:TMOD=20H,机器周期=12/fosc=,T=1/10KHZ=100 s(256-次数)*1 s=100 s TH1=TL1=256-100 采用中断方式:EA=1,ET1=1,二、定时器/计数器应用的C语言编程,#include static unsigned long overflowcount=0;void time1(void)interrupt 3 overflowcount+;/溢出计数器加1 void main(void)TMOD=(TMOD,例2:设单片机的fosc=12 MHz晶振,要求在P1.0脚上输出周期为2 ms的方波。分析:周期为2 ms的方波要求定时时间隔1 ms,每次时间到P1.0取反。机器周期=12/fosc=1 s 需计数次数=1000/(12/fosc)=1000/1=1000 由于计数器是加1计数,为得到1000个计数之后的定时器溢出,必须给定时器置初值为65536(216)-1000。,(1)用定时器0的方式1编程,采用查询方式,程序如下:#include sbit P1_0=P10;void main(void)TMOD=0 x01;/*设置定时器1为控制方式1*/TR0=1;/*启动 T/C0*/for(;)TH0=(65536-1000)/256;/*装载计数器初值*/TL0=(65536-1000)%256;do while(!TF0);/*查询等待TF0置位*/P1_0=!P1_0;/*定时时间到P1.0反相*/TF0=0;/*软件清 TF0*/,(2)用定时器0的方式1编程,采用中断方式。程序如下:#include sbit P1_0=P10;void time(void)interrupt 1 using 1 P1_0=!P1_0;/*P1.0取反*/TH0=(65536-1000)/256;*重新装载计数初值*/TL0=(65536-1000)%256 void main(void)TMOD=0 x01;/*T/C0工作在定时器非门控制方式1*/P1_0=0;TH0=(65536-1000)/256;/*预置计数初值*/TL0=(65536-1000)%256;EA=1;/*CPU中断开放*/ET0=1;/*T/C0中断开放*/TR0=1;/*启动T/C0开始定时*/do while(1);/*等待中断*/,例3:采用10 MHz晶振,在P1.0脚上输出周期为2.5 s,占空比20%的脉冲信号。分析:10 MHz晶振,使用定时器最大定时几十毫秒。取10 ms定时,周期2.5 s需250次中断,占空比20%,高电平应为50次中断。10 ms定时,晶振fosc=10 MHz。需定时器计数次数=1010310/12=8333 给定时器置初值为65536(216)-8333,#include#define uchar unsigned charuchar period=250;uchar high=50;timer0()interrupt 1 using 1/*T/C0中断服务程序*/TH0=(65536 8333)/256;/*重置计数值*/TL0=(65536 8333)%256;if(+time=high)P1=0;/*高电平时间到变低*/else if(time=period)/*周期时间到变高*/time=0;P1=1;,main()TMOD=0 x01;/*定时器0方式1*/TH0=(65536 8333)/256;TL0=(65536 8333)%256;EA=1;/*开CPU中断*/ET0=1;/*开T/C0中断*/TR0=1;/*启动T/C0*/do while(1);,三、串行口应用的C语言编程,例:单片机串行口发送程序,每发送一串字符“MCS-51”后,延时一段时间重复发送。#include#define uchar unsigned char#define uint unsigned intuchar idata trdata10=M,C,S,-,5,1,0 x0d,0 x0a,0 x00;main()uchar i;uint j;TMOD=0 x20;,TL1=0 xfd;TH1=TL1;SCON=0 xd8;PCON=0 x00;TR1=1;while(1)i=0;while(trdatai!=0 x00)SBUF=trdatai;while(TI=0);TI=0;i+;for(j=0;j12500;j+);,单片机串行口发送/接收程序,每接收到字节即刻发送出去;#includevoid main(void)unsigned char a;TMOD=0 x20;TL1=0 xfd;TH1=TL1;TR1=1;while(1)while(RI=0);R1=0;a=SBUF;SBUF=a;while(TI=0);T1=0;,

    注意事项

    本文(内部资源的C编程.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开