网站大量收购闲置独家精品文档,联系QQ:2885784924

51、52单片机的C程序设计课件.ppt

  1. 1、本文档共99页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51、52单片机的C程序设计课件

函数 ①函数的基本概念:函数的定义格式。函数的说明方法。函数的参数。函数的返回值。 ②函数的调用方法:传值调用方法和传址调用方法、嵌套调用、递归调用。 学习时注意:函数的定义和函数的说明是两回事;函数的实参和形参:调用函数的参数为实参,被调用函数的参数为形参。 函数的调用方式:传递变量本身值的调用称为传值调用。传递变量地址值的调用称为传址调用。注意二者调用的机制和特点。 C51在8051编程中的应用 ①8051内部资源的C编程:中断服务程序函数的编制;定时器/计数器的使用:初始化、中断服务程序的编制;串行口的初始化,串行通讯的编程。 ②8051输出控制的C编程:DAC0832的应用,步进电机的控制。 ③数据采集的C编程:ADC0809的应用,ADC574的应用。 ④8051人机交互的C编程:4*4矩阵键盘的应用、动态LED显示接口电路的应用。 思考题与习题 1. C51的数据存储类型有哪几种?几种数据类型各自位于单片机系统的哪一个存储区? 2.希望8051单片机定时器0的定时值以内部RAM的20H单元的内容为条件而可变,即当(20H)=00时,定时值为10ms,当(20H)=01时,定时值为20ms。请根据以上要求对定时器0的初始化,设单片机的时钟频率为12MHz。 3.用单片机和内部定时器来产生矩形波。要求频率为100Hz,占空比2:1(高电平时间长)。设单片机的时钟频率为12MHz。写出相关程序。 4.用8051单片机和0832数模转换器产生梯形波参照图7-17。梯形波的斜边采用步幅为1的线性波,幅度为00H~80H,水平部分调用延时程序来维持。写出梯形波的程序 。 5.用单片机进行程序控制。设某个生产过程有6道工序,每道工序的时间分别为10s、8s、12s、15s、9s和6s。用单片机通过8255的口A来进行控制。口A中的1位就可控制某一工序的启停。试编制相关的程序。 6.用8051内部定时器来控制对0809的0通道信号进行数据采集和处理。请参照图7-19。每分钟对0通道采集一次数据,连续采样5次。若平均值超过80H,则P1.0口=1,否则P1.0=0。 7.C51的数据存储类型有哪几种?几种数据类型各自位于单片机系统的哪一个存储区? 8.希望8051单片机定时器0的定时值以内部RAM的20H单元的内容为条件而可变,即当(20H)=00时,定时值为10ms,当(20H)=01时,定时值为20ms。请根据以上要求对定时器0的初始化,设单片机的时钟频率为12MHz。 9.用单片机和内部定时器来产生矩形波。要求频率为100Hz,占空比2:1(高电平时间长)。设单片机的时钟频率为12MHz。写出相关程序。 10.用8051单片机和0832数模转换器产生梯形波参照图7-17。梯形波的斜边采用步幅为1的线性波,幅度为00H~80H,水平部分调用延时程序来维持。写出梯形波的程序 。 11.用单片机进行程序控制。设某个生产过程有6道工序,每道工序的时间分别为10s、8s、12s、15s、9s和6s。用单片机通过8255的口A来进行控制。口A中的1位就可控制某一工序的启停。试编制相关的程序。 12.用8051内部定时器来控制对0809的0通道信号进行数据采集和处理。请参照图7-19。每分钟对0通道采集一次数据,连续采样5次。若平均值超过80H,则P1.0口=1,否则P1.0=0。 * #include reg51.h unsigned char status; bit flag; void server_int1() interrupt 2 using 2 /* INT1 中断服务程序,使用第二组寄存器*/ { flag=1; /*设置标志*/ status=P10x7; /*存状态*/ } void main() { IP=0x04; /*置INT1高优先级中断*/ IE=0x84; /*INT1开中断,CPU开中断*/ TCON=TCON | 0x04; /*设置INT1边沿触发方式*/ for(;;) { if (flag) /*有中断*/ { switch(status) { case 7: {P0=0x01;break;}

文档评论(0)

yan698698 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档