利用定时/计数器T0从P1.0输出周期为1s,脉宽为20ms有正脉冲信号,晶振频率为12MHz,求C语言设计程序

就是单片机课本习题了,哈哈哈,我交了作业啦,谢谢你们

#include <reg51.h>
sbit P10=P1^0;
void Timer0Init(void) //20毫秒@12.000MHz
{
TMOD &= 0xF0; //设置定时器模式
TL0 = (65536-20000)%256; //设置定时初值
TH0 = (65536-20000)/256; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void main()
{
    Timer0Init();
    P10=1;
    while(1);
}

 void timer0_isr()  interrupt 1  //  中断的服务的程序
{
    static int cnt=0;
    TL0 = (65536-20000)%256; //设置定时初值
    TH0 = (65536-20000)/256; //设置定时初值
    if(++cnt>50)
    {
        cnt=0;
        P10=1;
    }
    else
    {
        P10=0;
    }
}

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-06-21
就设置到定时器模式,定时时间设置成10ms,用13或者16位模式就可以,打开定时器中断,在中断函数里面对这个引脚取反就可以实现了,在一个WHILE里面不断循环,很简单的,自己看看书上的例子就回了,本回答被提问者采纳
第2个回答  2010-11-30
我打赌你课本上有例题,把你课本上的程序中的定时器的初始值换一下就可以了

利用定时\/计数器T0从P1.0输出周期为1s,脉宽为20ms有正脉冲信号,晶振频 ...
include <reg51.h>sbit P10=P1^0;void Timer0Init(void)\/\/20毫秒@12.000MHz{TMOD &= 0xF0;\/\/设置定时器模式TL0 = (65536-20000)%256;\/\/设置定时初值TH0 = (65536-20000)\/256;\/\/设置定时初值TF0 = 0;\/\/清除TF0标志TR0 = 1;\/\/定时器0开始计时}void main(){ Timer0Init(); ...

利用定时计数器T0从P1.0输出周期为1s,脉宽为20ms的正脉冲信号,晶振频率...
周期1s为1000ms 所以低电平为980ms 所以采用20ms的定时中断,然后计数49次实现980ms,再计算初值

试利用定时器\/计数器T0从P1.0输出周期为1ms,脉宽为20ms的正脉冲信号...
脉宽为20ms的脉冲信号,其周期要大于20ms的。估计你是说反了吧,应该是脉宽为1ms,而周期是20ms,那低电平是19ms,这才合理。可以定时1ms输出高电平,再计时19ms输出低电平。这样,高电平1ms加上低电平19ms是一个周期为20ms。

利用定时\/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设...
利用定时\/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz. 应该中断几次呢? 5 我算的是中断十次就够了,但是实验的时候要20次才能够达到1HZ闪烁。如下: #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit d1=P2^0; uint a; void main() { ...

利用定时\/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设...
请问这个1HZ是怎么算时间的。--- 1HZ就是每秒1个周期,100Hz就是每秒100个周期...让发光二极管以1HZ闪烁,就是500ms亮,500ms灭。所以,本题目要求的延时时间是500ms。可以定时50ms中断一次,中断10次即可。

求单片机中围绕五个中断的程序题目 ?急求!
1、利用定时\/计数器T0从P1.0输出周期为1s的方波,让发光二极管以1HZ闪烁,设晶振频率为12MHz。。2、利用定时\/计数器T1产生定时时钟,由P1口控制8个发光二极管,使8个指示灯依次一个一个闪动,闪动频率为10次\/秒(8个灯依次亮一遍为一个周期),循环。3、同时用两个定时器控制蜂鸣器发声,定时器0控制...

...器的频率是12MHz,利用定时器1采用方式1定时20ms,
12MHz晶振,单片机机械周期 T=12\/Fosc=12\/12MHz=1us;T1定时器工作模式1 为 16位定时器,定时计算公式为:t= (2^16-<TH1:TL1>)×机械周期 T,将T=1us,t=20ms 代入公式得:(65536-<TH1:TL1>)×1us=20ms,得:TH1:TL1=65536-20ms×1000us\/ms÷1us=45536=0xB1E0,得:TH1=0xB1...

MCS-51单片机试题
MOV RUNC, #255 ;255就是-1 SJMP WAN LING:MOV RUNC, #0 WAN:SJMP $ ;原地转移;真完了。4.编写程序:利用定时\/计数器T0的方式1,产生10ms的定时,并使P1.0引脚上输出周期为20ms的方波,采用中断方式,设系统时钟频率为12 MHz。ORG 0000H SJMP START ORG 000BH SJMP T0_INT START...

使用定时\/计数器T0以工作方式2实现定时,在P1.0输出周期为200 μs...
因为是6MHz,所以在装初值时要比12MHz的数值大一倍才行,所以减数才会更小一点。希望我的回答能帮助到你。 本回答由提问者推荐 举报| 答案纠错 | 评论 2 2 Cindere鞡 采纳率:90% 擅长: 嵌入式 为您推荐: 单片机定时和计数区别 时间计数器的工作方式 秒计数器 定时器的工作方式 计数器初值 增减计数...

利用8051单片机定时器T0测量某正脉冲的宽度 这个问题你弄懂了 能给我...
它已经是一个周期内有一半时间(甚至更长时间)有信号。计算机内的信号就是脉冲信号,又叫数字信号。最大脉宽计算:知道计数器中断的产生是从全1变为全0产生溢出中断,所以计数器的处置设定为00H,如果让其工作在方式1计数下,最大计数值为2^16=65536,那么最大计数脉冲宽度就是65536*2us。

相似回答