- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
单片机编程考试题库
三、定时器/计数器应用
定时器/计数器是单片机内部重要的外设,广泛应用于精确延时、脉冲计数、PWM生成等场合。理解其工作原理、工作模式及编程方法至关重要。
例题5:定时器定时功能
题目:已知某单片机晶振频率为fosc,定时器T0工作在模式1(16位定时器),请计算并编写程序,使T0产生一个周期为20ms的方波,并从P1.0口输出。(要求使用中断方式实现,需写出初始化函数和中断服务函数的核心代码)
要点分析:
1.计算初值:方波周期20ms,即高低电平各10ms。机器周期Tcy=12/fosc。10ms内的机器周期数为N=____/Tcy。16位定时器最大计数值为____,故初值X=____-N。若N大于____,则需考虑定时器溢出后重装初值(模式2自动重装或模式1手动重装)。
2.初始化定时器:配置TMOD寄存器选择T0为模式1(M1M0=01),非门控方式(GATE=0),定时模式(C/T=0)。将初值X的高8位和低8位分别写入TH0和TL0。
3.使能定时器中断:配置IE寄存器,ET0=1(允许T0中断),EA=1。
4.启动定时器:设置TCON寄存器中的TR0=1。
5.中断服务函数:在T0中断服务函数中,重新装载初值(模式1需手动),并翻转P1.0口电平。
四、定时器/计数器应用
例题6:计数器功能
题目:利用单片机定时器T1的计数功能,对外部引脚T1(P3.5)上输入的脉冲信号进行计数。当计数值达到100个脉冲时,使P1.2引脚输出一个高电平脉冲,宽度为1ms。请简述实现思路,并编写核心代码片段。
要点分析:
1.定时器模式选择:T1工作于计数模式(C/T=1),选择合适的计数模式(如模式2,8位自动重装计数器,最大计数值256,满足100的需求)。
2.计数初值设置:模式2下,初值X=256-100=156。将X同时写入TH1和TL1。
3.初始化与中断使能:配置TMOD,使ET1=1,EA=1,TR1=1。
4.计数中断处理:在T1中断服务函数中,首先禁止T1计数(TR1=0),然后通过P1.2输出高电平。接着,可启动另一个定时器(如T0)实现1ms延时,延时结束后将P1.2拉低,最后清零计数中断标志,并重新允许T1计数(TR1=1)以准备下一次计数。
此方案中,1ms延时也可通过软件延时函数实现,但利用定时器延时更精确。
五、串行通信编程
串行通信是单片机与外部设备交换数据的常用方式,UART异步通信尤为常见。掌握其数据格式、波特率设置、初始化及收发编程是基本要求。
例题7:UART初始化与发送
题目:某单片机UART支持8位数据位、1位停止位、无奇偶校验位(8N1)。已知晶振频率为11.0592MHz,要求设置波特率为9600bps。请编写UART初始化函数,并编写一个函数`voidUART_SendByte(unsignedchardat)`用于发送一个字节的数据。(假设使用定时器T1作为波特率发生器,工作于模式2)
要点分析:
1.波特率计算:对于8051系列单片机,使用T1模式2(自动重装)作为波特率发生器时,波特率计算公式为:波特率=(2^SMOD/32)*(fosc/(12*(256-X))),其中SMOD是PCON寄存器中的波特率加倍位,X为TH1初值。
已知fosc=11.0592MHz,波特率=9600bps,设SMOD=0,则:
9600=(1/32)*(____/(12*(256-X)))
解得X=256-(____/(12*32*9600))=256-3=253=0xFD。
2.UART初始化:
*SCON寄存器:配置为模式1(8位UART,REN=0不接收),即SM0=0,SM1=1,REN=0。
*PCON寄存器:若SMOD=0,则无需特别设置。
*TMOD寄存器:配置T1为模式2定时(M1M0=10,C/T=0,GATE=0)。
*装载TH1=TL1=0xFD,启动T1(TR1=1),禁止T1中断(ET1=0)。
3.发送函数:查询方式发送。等待SCON中的TI(发送中断标志)置0,然后将数据写入SBUF寄存器,随后等待TI置1,最后清零TI。
六、I/O口与外设接口编程
单片机通过I/O口与各种外设进行交互,如LED、按键、数码管、LCD、ADC、DAC等。掌握这些基本外设的接口方法和驱动编程是单片机应用的基础。
例题8:独立按键检测与消抖
题目:单片机P3.2口连接了一个独立按键K1,按下时为低电平。请编写一个函数`unsignedcharKey_Scan(void)`,该函
原创力文档


文档评论(0)