单片机总复习 答(3)

1970-01-01 08:00

单片机总复习

2s的方波,试编程。

解:

#include

sbit P1_1=P1^1; //定义位变量 unsigned char i; //定时次数

void timer0over(void); //函数声明(定时50ms函数) void main( ) //主函数 {

i=0;

TMOD=0x01; TH0=(65536-50000)/256;

//定时器T0定时50ms,方式1

TL0=(65536-50000)%6; TR0=1; //开T0 for(;;) { if(TF0) timer0over( ); } }

void timer0over(void) {

TH0=(65536-50000)/256; TL0=(65536-50000)%6; TF0=0; i++;

if(i==20) //20次到了吗? { i=0; P1_1=!P1_1; } }

8. 在8051系统中,已知振荡频率是12MHz,用定时器/计数器T1实现从P1.1产生高电平宽度是10ms,低电平宽度是20ms的矩形波,试编程。 解:

#include unsigned char i; sbit P1_1=P1^1;

void main( ) //主函数 {

i=0;

TMOD=0x10; //T1定时方式1,定时时间10ms TH0=(65536-10000)/256;

11

单片机总复习

TL0=(65536-10000)%6; EA=1; ET1=1; TR1=1; while(1); }

void timer1_int(void) interrupt 3 {

TH0=(65536-10000)/256; TL0=(65536-10000)%6; i++;

if(i==1) P1_1=0; else if(i==3) { i=0; P1_1=1; } }

9. 用单片机和内部定时器来产生矩形波,要求频率为100Hz,占空比为2:1,设单片机的时钟频率为12MHz,写出有关程序。 解:

#include unsigned char i; sbit P1_1=P1^1;

void main() {

i=0;

TMOD=0x10;

TH0=(65536-10000)/256; TL0=(65536-10000)%6; EA=1; ET1=1; TR1=1; while(1); }

void timer1_int(void) interrupt 3 {

TH0=(65536-10000)/256; TL0=(65536-10000)%6; i++;

12

单片机总复习

if(i==2) P1_1=0; else if(i==3) { i=0; P1_1=1; } }

10. 如图1-1所示,单片机P1口的P1.0和P1.1各接一个开关S1、S2,P1.4、P1.5、P1.6和P1.7各接一只发光二极管。由S1和S2的不同状态来确定哪个发光二极管被点亮,如表1-4所示。

表1-4 S1、S2与二极管的关系

S2 S1 被点亮的二极管

0 0 VD1

0 1 VD2

解:(一)程序如下: #include void main() {

char a; a=P1 /*读P1口*/ a=a&0x03; /*屏蔽高6位*/ if(a==0) P1=0x83; else if a==1 P1=0x43; else if a==2 P1=0x23; else P1=0x13; }

(二)程序如下: #include “reg51.h” void main( ) { char a; a=P1; /*读P1口*/ a=a&0x03; /*屏蔽高6位*/ switch (a) { case0:P1=0x83;break; case1:P1=0x43;break; case2:P1=0x23;break;

13

1 1 0 1 VD3 VD4 单片机总复习

case3:P1=0x13; } }

11. 外部中断0引脚(P3.2)接一个开关,P1.0接一个发光二极管。开关闭合一次,发光二

极管改变一次状态,试编程。

解:程序如下: #include “reg51.h” #include “intrins.h” void delay(void) { int a=5000; while(a--)_nop_(); } void int_srv(void)interrupt 0 using 1

{ delay(); if(INT0==0) {P10=!P10;while(INT0==0);} }

void main() { P10=0; EA=1; EX0=1;while(1); }

12. 让接在P1.0引脚上的LED发光,试编程。 解:程序如下: include sbit P1_0=P1^0; void main() { P1_0=0; }

13. 让接在P1.0引脚上的LED闪烁发光,试编程。 解:程序如下: #include\

#define uchar unsigned char #define uint unsigned int sbit P1_0=P1^0;

/*延时程序,有Delay参数确定延迟时间*/ void mdelay(uint Delay) { uint i;

for(;Delay>0;Delay--)

14

单片机总复习

{ for(i=0;i<124;i++) {;} } }

void main() { for(;;) { P1_0=!P1_0; //取反P1.0引脚 mdelay(10000); } }

13. MCS-51单片机扩展一片2716存储器,画出系统电路原理图,写出地址分布。 答:

P0.0 . . P0.7 8031 ALE

P2.0 P2.1 P2.2 P2.7 PSEN D0 .

. 74LS373 D7 G

Q0 . . Q7 OE A1 . . A7 D0 . . D7 2716 (2K)

A8 A9 A10 CE OE

程序存储器的地址范围为:0000H~07FFH 14. 已知如图所示电路,请回答: (1) ADC0809的口地址为_______。 (2) EOC的作用是_______。

答:(1) ADC0809口地址为7FF0H~7FF7H(或7FF8~7FFFH)

(2) EOC为A/D转换结束信号,用来引起中断或查询,以便读取A/D的转换结果。

15. 阅读下列硬件图,补齐连接线 ,并回答问题 :

15


单片机总复习 答(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:KSOA业务管理系统介绍

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: