设单片机晶振频率为6MHz,要求使用定时器1以方式0产生周期为500us的等宽正方波连续脉冲,并由P1.0输出,以查询方式完成。
求单片机高手帮忙!
;----------------------------------------------------------------
分析:
方式0,求初始值时,稍麻烦点。
按照题目要求,需要定时250us。
因为晶振频率为6MHz,指令周期就是2us,那么计数值就是125。
因为方式0的最大计数值是 2^13,于是有:
初始值 = 8192-125 = 8067 = 1111 1100 00011
使用方式0,要求把1111110000011,分成高8位和低5位,故有:
1111 1100 '000'00011
;----------------------------------------------------------------
程序如下:
MOV TMOD, #00H
MOV TH1, #11111100B
MOV TL1, #00000011B
SETB TR1
LOOP:
JNB TF1, $
MOV TH1, #11111100B
MOV TL1, #00000011B
CPL P1.0
CLR TF1
SJMP LOOP
END
;----------------------------------------------------------------
经过用 PROTEUS 实验发现,P1.0输出方波频率稍有误差。
如果把TL1赋值指令改为:MOV TL1, #00000101B,可将频率控制为2016Hz。
关键字:定时器1 方式0 连续脉冲
引用地址:
使用定时器1以方式0产生周期为500us的方波连续脉冲
推荐阅读最新更新时间:2024-03-16 16:02
利用定时方式0,测量外部脉冲宽度(5到250ms),74HC595输出显示
;有人提问: ;利用单片机的定时方式0,实现外部脉冲宽度(在5到250ms)的测量。要求画出电路图。在线等 ;问题补充:写出程序,测量结果存储在R0中。 ;================================================= ;做而论道对此题给出了答案: ;外部脉冲宽度(在5到250ms)之间,测量存放在R0。程序如下。 ORG 0000H JMP START ORG 000BH JMP T0_INT ;------------;初始化 START: MOV SP, #60H MOV TMOD, #01H ;/*T0定时方式1*/ MOV TH0, #HIGH(655
[单片机]
STM8S103定时器1,定时器2多路PWM波输出
一、时钟配置 1、STM8S的4种时钟源可用做主时钟: ● 1-24MHz高速外部晶体振荡器(HSE) ● 最大24MHz高速外部时钟信号(HSE user-ext) ● 16MHz高速内部RC振荡器(HSI) ● 128KHz低速内部RC(LSI) STM8默认时钟源为16MHz高速内部RC振荡器(HSI) 对 CLK_CKDIVR设置可以设置时钟为HSI的分频 如 CLK_CKDIVR|= (uint8_t)0x00;/*设置时钟为内部16M高速时钟*/ 2分频为 CLK_CKDIVR=0x08;4分频为 CLK_CKDIVR=0x10;8分频为 CLK_CKDIVR=0x18; 二、定时器1设置
[单片机]
89C51单片机之定时器0、1控制LED1、0.5秒闪烁
1.proteus仿真图 2.keli代码 #include reg51.h sbit led1=P0^0; sbit led2=P1^0; int count0,count1; //定时器0溢出中断程序 void timer0() interrupt 1 //定时器0中断标志位为1 { //重新装载定时器0计数初值 TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(count0==10) //T0*10=1s LED1闪烁 { led1=~led1; count0=0; } count0++; } //定时
[单片机]
STM32实验1:定时器中断同时产生两路不同频率的信号
一、实验目的 使用STM32同时产生两路不同频率的信号,并通过观察开发板两个LED闪烁快慢的现象,以及在MDK5中软件仿真逻辑分析中查看波形,体现两路信号频率的不同。 二、实验原理 通过定时器中断配置,定时器3每600ms中断一次,然后中断服务函数中控制LED实现LED1状态取反(闪烁);定时器4每200ms中断一次,然后中断服务函数中控制LED实现LED0状态取反(闪烁)。 本实验用到的硬件资源有: 1) 指示灯 LED0 和 LED1 2) 定时器 TIM3,TIM4 TIM3,TIM4属于 STM32 的内部资源,只需要软件设置即可正常工作。 1、通用定时器电路框图 2、计数器模式 采用向上计数 向上计数模式:计数器从
[单片机]
MSP430F149单片机的内部定时器A定时1秒钟实现LED闪烁
#include msp430x14x.h //********************函数声明****************** void InitClock(); //********************主函数******************** void main(void) { WDTCTL = WDTPW + WDTHOLD; // 关看门狗 InitClock(); // 初始化时钟 P1DIR |= BIT0; // 设P1.0为输出 CCTL0 = CCIE;
[单片机]
MCS-51系列单片机定时器/计数器T0和T1
MCS-51系列的 单片机 内,共有两个16位可编程的定时器/计数器,分别称为定时器/计数器T0和定时器/计数器T1。 与定时器/计数器有关的特殊功能寄存器有以下几个: 1、TH0、TL0为T0的16位计数器的高8位和低8位。 2、TH1、TL1为T1的16位计数器的高8位和低8位。 3、TMOD为T0、T1的方式寄存器。 4、TCON为T0、T1的状态和控制寄存器,存放T0、T1的运行控制位和溢出中断标志位。 5、中断控制寄存器IE、IP。 通过对TH0、TL0和TH1、TL1的初始化编程来设置T0、T1计数器初值,通过对TCON和TMOD的编程来选择T0
[单片机]
AVR定时器1快速PWM模式设置
简单归纳一下: 快速PWM,是由匹配值和TOP 值决定的。而TOP值可以是固定的(方波产生模式5,6,7),又或者可编程(方波产生模式14,15)。方波产生模式5,6,7 分别对应0x00ff,0x01ff,0x03ff 的TOP 值,而模式14,15 的TOP 值分别为1CR1,和OCR1A 来决定。从视频教程中我们知道模式15 需要牺牲OC1A 作为代价,(OC1A=PD5)OCR1A 决定了PWM 输出的频率,而OCR1B 决定了PWM 不同的占空比输出。换一句话说,OCR1A 是OCR1B 求出占空比的参考值。(上一页有详细的介绍),虽然OC1A 被牺牲了,但是,OC1A 还可以很合理的设置依然可以工作于近似CTC 模
[单片机]
CC2530看门狗定时器实现1秒定时
实验要求 代码实现 #include ioCC2530.h #define D4 P1_1 //延迟函数 void Delay(unsigned int t) { while(t--); } //端口初始化函数 void Init_Prot() { //配置4个LED灯的引擎 //选择端口的功能 P1SEL &=~0x1B;//设置通用io端口 //配置端口的方向 P1DIR |=0x1B; //关闭LED灯 P1 &=~0x1B; } //初始化一个看门狗控制寄存器 void Init_WDT() { //配置WDTCTL WDCTL = 0x0C; //IEN2 IEN2 |= 0x
[单片机]