微控制器作业答案(共13页).doc

上传人:飞****2 文档编号:13885520 上传时间:2022-05-01 格式:DOC 页数:13 大小:35.50KB
返回 下载 相关 举报
微控制器作业答案(共13页).doc_第1页
第1页 / 共13页
微控制器作业答案(共13页).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《微控制器作业答案(共13页).doc》由会员分享,可在线阅读,更多相关《微控制器作业答案(共13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上微控制器作业(第四章)4.5、试用C51语言编写将0-9,A-F转换成相应的ASC2码的程序。答:程序段如下:#include#include void main()unsigned char ch;scanf(%c, &ch);if(9=ch=0|F=ch=A)printf(%d.n,ch);return 0;4.11、用C51语言和汇编语言混合编程的方法,使单片机的P1.0引脚产生占空比为90%周期为10ms的方波。答:程序如下:C程序文件:#include#define uchar unsigned charsbit P1_0=P11;extern delay1

2、ms(unchar x); /外部函数delay1ms()声明,入口参数为xmain()for(;)P1_0=1;delay1ms(9); /调用外部函数delay1ms(9),参数9送入寄存器R7P1_0=0;delay1ms(1);void delay1ms()#pragma asmpublic_delay1ms /用public声明_delay1ms为其他函数调用,以_开头后跟函数名de segment code /定义de段在定义函数段rseg de /定义de为当前段_delay1ms:nopdela:mov r1,#0f8hlop1:nop nop djnz r1,lop1 djn

3、z r7,dela ret end#pragma endasm微控制器作业(第六章)6.2、设计一个声光报警器,设备正常运行时,绿色指示灯亮,若设备非正常运行时,红灯闪烁、报警器持续发声报警。答:#include#includedefine red p10 /红灯输入define green p11 /绿灯输入void delay(viod);main() IT0=0;/外中断0电平触发方式 EA=1;/开放CPU中断允许 EX0=1;/设置外中断0中断允许 PX0=0;/中断系统只有一个中断源,设置为低中断优先级 while(1) bingbing=1;/蜂鸣器三极管截止,不叫; green

4、=0;/绿灯亮void delay1s()#pragma asmMOV R7,#1000DEL:MOV R6,#500DJNZ R6,$DJNZ R7.DEL#pragma endasm Extern () interrupt 0 bingbing=0;/使蜂鸣器持续发声 green=1;/绿灯灭 red=0;/使红灯亮delay1s();red=1;/红灯灭Define bingbing p12 /蜂鸣器输入6.3、简述AT89S系列单片机内部中断源,并指出各中断源中断服务程序入口地址。答:特殊功能寄存器TCON中与中断相关的有,TF0和TF1两位。TF0:定时/计数器T0计数溢出中断标志位

5、。TF1:定时/计数器T1计数溢出中断标志位。89S52内部中断源除了T0和T1外,还有定时/计数器T2和串行口中断。定时/计数器T2中断:定时/计数器T2的计数溢出标志位TF2为“1”,或者T2的外部中断标志位EXF2为“1”,作为有效中断请求,向CPU请求中断。串行口中断:串行口的接受中断标志RI(SCON.0)和发送中断标志TI(SCON.1)逻辑或以后作为内部的一个中断源。6.4、设计一个外部事件中断计数器,使用外中断0的边缘触发方式,对外部发生的中断事件进行计数。答: #includeUnsigned char i=0;Main()IT0=1;/外中断0边沿触发方式EA=1;/开放C

6、PU中断允许EX0=1;/设置外中断0中断允许PX0=0;/中断系统只有一个中断源,设置为低中断优先级Extern () interrupt 0 i+;6.6、单片机系统使用12MHz的晶振,使用定时/计数器T0产生250us的定时,使P3.4输出周期为1s的方波,试编写主程序和T0中断服务程序。答:计数初值为65536-250=65286=FF06H;即计数器中TL0的初值为06H。TH0的初值为FFH。#includeSbit p3_4=p34;Unsigned char a=2000;Main() TH0=0x06; TL0=0xFF; TMOD=0x01;/T0工作在方式1 IE=0x

7、81;/允许T0向CPU申请中断TR0=1;/启动T0开始计数While(1);Timer () interrupt 1TH0=0x06;TL0=0xFF;/重赋计数初值a-;if(a=0)a=2000;p3_4= p3_4;6.10、单片机系统晶振为11.0592MHz,串行口工作于方式1,波特率为4800bit/s,从串行口输出字符“AT89S52 Micro Computer”。试分别用查询方式和中断方式编写程序。答:查询方式:#include unsigned char a = “AT89S52 Micro Computer0”;unsigned char i = 0;main()TM

8、OD = 0x20; /定时器T1工作于方式2TH1 = 0xFA;TL0 = 0xFA; /波特率4800SCON = 0x40; /串行口工作于发送方式TR1 = 1;TI = 1; /便于实现循环发送数据while(ai != 0) while(TI = 0); TI = 0; SBUF = ai; i+;中断方式:#include unsigned char a = “AT89S52 Micro Computer0”;unsigned char i = 0;main()TMOD = 0x20; /定时器T1工作于方式2TH1 = 0xFA;TL0 = 0xFA; /波特率4800SCO

9、N = 0x40; /串行口工作于发送方式EA = 1;ES = 1; /打开串口中断TR1 = 1;TI = 1; /便于实现循环发送数据while(1);uart() interrupt 4 using 1if(TI = 1) /确认是发送中断 while(ai != 0) TI = 0; SBUF = ai; i+; 6.11、0#单片机以波特率1200bit/s,从串行口发送内部RAM20H30H单元的数据块,晶振为11.0592MHz,1#单片机从串行口接收数据,并将数据保存于其内部存储器中,试着编写程序。答:0#单片机程序如下: ORG 0000H LJMP MIANMIAN: M

10、OV TMOD, #20H ;T1工作于方式2,定时 MOV TH1, #0FDH ;波特率9600 MOV TL1, #0FDH MOV SCON, #40H ;工作于发送方式 SETB TR0 SETB TI MOV R0, #20H MOV R7, #10HWAIT: JNB TI, WAIT ;是否发送完毕 CLR TI MOV A, R0 MOV SUBF, A INC R0 DJNZ R7, WAIT ;R7减一循环,直到20H30H的内容发送完毕 SJMP $ END1#单片机程序如下: ORG 0000H LJMP MIANMIAN: MOV TMOD, #20H ;T1工作于

11、方式2,定时 MOV TH1, #0FDH ;波特率9600 MOV TL1, #0FDH MOV SCON, #50H ;工作于接收方式 SETB TR0 SETB RI MOV R0, #20H MOV R7, #10HWAIT: JNB RI, WAIT ;是否接收完毕 CLR RI MOV A, SUBF MOV R0, A INC R0 DJNZ R7, WAIT ;R7减一循环,直到内容接收完毕,全部存储于20H30H单元 SJMP $ END附加作业1、 (例题62用C51编写)编程使得蜂鸣器响铃10次,每次响铃发出250Hz的声音,维持时间为0.5s,静音1s,单片机使用12M

12、Hz的晶振。答: #includeSbit p1_0=p10; Void delay2ms(); Void delay1s();Void main() Unsigned char i,j; for(i=0;i10;i+) for(j=0;j20;j+) P1_0=0; delay2ms(); P1_0=0; delay2ms(); P1_0=0; Delay1s(); Void delay2ms()#pragma asmMOV R7,#10DEL:MOV R6,#100DJNZ R6,$DJNZ R7.DEL#pragma endasmVoid delay1s()#pragma asmMOV

13、R7,#1000DEL:MOV R6,#500DJNZ R6,$DJNZ R7.DEL#pragma endasm2、(例题66用C51编写)设计一个应用程序,使用定时/计数器T0定时方法在P1.0引脚输出周期为100ms,占空比为1:9的周期信号,晶振选用12MHz的晶振。答:由分析可知,周期100ms,占空比为1:9,则高电平持续时间为10ms,低电平持续时间为90ms,使用定时/计数器T0产生10ms定时,T0工作于方式1,则计数初值为:。因此,#includeSbit p1_0=p10;Unsigned char a=9;Main() TH0=0xD8; TL0=0xF0; TMOD=0x01;/T0工作在方式1IE=0x81;/允许T0向CPU申请中断TR0=1;/启动T0开始计数While(1);Timer () interrupt 1 For(a=9;a0;a)TH0=0xD8;TL0=0xF0;/重赋计数初值P1_0=0; if(a=0)TH0=0xD8; TL0=0xF0;/重赋计数初值 P1_0=1;专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁