简答题

某8051系统晶振频率为6MHz,先欲从P1.7引脚输出一个连续5Hz的方波信号,请编写程序。

正确答案

5Hz的方波周期为200毫秒,高低电平各持续100毫秒,若晶振频率为6MHz,则机器周期为2微秒,故其计数值应为: N=100ms/2μs=50000
采用方式1进行计数,则 X=M-N=65536-50000=15536H=0C350H
程序编写如下:
M.OV TMOD, #05H; 设置T0工作方式,定时,方式1
M.OV TH0,#0C3H;  写入计数器初值
M.OV TL0,#050H;
S.ETB TR0;启动T0
L.OOP: JBC  TF0,$; 查询定时器溢出标志
M.OV TH0,#0C3H;
M.OV TL0,#050H
C.PL  P1.7
S.JMP LOOP;
E.ND
也可以用C语言编写:
用定时/计数器T0从P1.7输出周期为5s的方波,晶振频率为6MHz。
#include 
#define uchar unsigned char
#define uint unsigned int
S.bit D1=P1^0;
U.char a;
V.oid init()               //初始化 {
T.MOD=0x01;             //选择定数计数器0的工作方式为16位定时器
T.H0=(65535-50000)%256; //赋初值,定时100ms
T.L0=(65535-50000)/256;
E.A=1;                  //中断控制允许
E.T0=1;
a=0; 
TR0=1;                 //启动定时器0 } 
void time0() interrupt 1 //定时器0中断函数 { 
TH0=(65535-50000)%256; //赋初值,定时100ms     TL0=(65535-50000)/256;     a++; 
TR0=1;     } 
void main() 
{ 
init();     
while(1)     
{ 
while(a==25)//半个周期(2500ms)时,P1.7上的电平跳变一次。 
{ 
a=0; 
P1.7=~P1.7;     //取反        }     } }

答案解析

相似试题
  • 在一个应用系统中,晶振频率为12MHz,一个外部中断请求信号的宽度是300ns的负脉冲,该采用哪种触发方式?如何实现?

    简答题查看答案

  • 要MCS-51系统中,若晶振频率屡8MHz,一个机器周期等于()μs

    单选题查看答案

  • 一台微机的CPU,其晶振的主振频率为4MHz,二分频后作为CPU的时钟频率。如果该CPU的一个总线周期含有四个时钟周期,那么此总线周期是()μs。

    填空题查看答案

  • 一台微机的CPU,其晶振的主振频率为8MHz,8分频后作为CPU的时钟频率。如果该CPU的一个总线周期含有四个时钟周期,那么此总线周期是()μs。

    单选题查看答案

  • 欲从已知关系中按某条件取出两列,则应采取关系代数的()运算。

    单选题查看答案

  • 某条件传送的接口,其状态端口地址为2F0H,状态位用D7传送,端口地址为2F1H,设输入设备已被启动,在输入数据时可再次启动输入,欲从输入设备上输入4000B数据送存贮器BUFFER缓冲区,请编写程序段。

    简答题查看答案

  • 某单片机系统,时钟频率为12MHz,定时/计数器T0用于20ms定时,T1用于100次计数,两者要求重复工作。

    简答题查看答案

  • 某单片机系统,时钟频率为12MHz,定时/计数器T0用于20ms定时,T1用于100次计数,两者要求重复工作。

    简答题查看答案

  • 某单片机系统,时钟频率为12MHz,定时/计数器T0用于20ms定时,T1用于100次计数,两者要求重复工作。

    简答题查看答案