用T1,工作方式2,定时器中断,实现发光二极管D0闪烁,闪烁节拍为201ms,用硬件实现,51单片机(80C51)

作者&投稿:徵薇 (若有异议请与网页底部的电邮联系)
那个题目最后怎么解决的啊,帮我解决一下好嘛,谢谢了。用T1,工作方式2,定时器中断,实现发光二极管D0闪烁~

#include
bit Led_Stat = 0;
unsigned int num = 0;

void main()
{
P0 = 0;
P1 = 0x0c;
P1_2 = 0;
TMOD = 0x20;
TH1 = 256-201;
TL1 = 256-201;
EA = 1;
ET1 = 1;
TR1 = 1;

while(1)
{
P0_4 = Led_Stat;
}
}

void T1_timer()interrupt 3
{
num ++;
if(num == 1000)
{
Led_Stat =~ Led_Stat;
num = 0;
}
}
你是哪个学校的哟,怎么也有这个问题

main ()
{
TMOD = 0x01;//使能T0定时器工作于16位定时/计数方式
TH0 = 0x3C;//T0定时器50mS定时初值,此值按照12MHz频率计算出来的(假定是51单片机)
TL0 = 0xC0;
ET0 = 1;//允许定时器T0中断
EA = 1;//开中断
TR0 = 1;//定时器T0开始计数
while(1);//在这里死循环,等待T0中断发生
}

Timer0_int() interrupt 1 //定时器T0中断函数,每中断1次50mS
{
static unsigned char i = 10;//定义1个用于中断次数计数的静态变量
if(i)i--;//如果变量为真,减量计数
else{ //中断次数达到10次,10 * 50mS = 0.5S
LED = ~LED;//LED的状态取反(由亮变灭或由灭变亮)//LED用那根I/O自己定义
i = 10;//为下1个0.5S的中断次数计数重新赋值
}
TH0 = 0x3C;//恢复定时器T0初值
TL0 = 0xC0;
}

你这程序有几处错误,怎么能调试通过呢?是用KeilC编译的吗?你的LED灯接在哪个脚上了?是P0^4吗?因不知晶振频率是多少,所以,不知计算的时间常数对不对。不管这些,就程序有几处错误,如下:
1,#include<REGX51.H>改为#include<REG51.H>
2,while(1)主循环中的P0_4=led_stat;不行,要先用sbit led=P0^4定义
改为led=led_stat;才行的。
3,if(num==1000),因unm是无符号字符型,最大是255,你这超出了最大数,
改为if(num==100)
4,void T1_timer()interrupt 3 中断子程序要省掉
TH1=0X37;
TL1=0X37;
改过以后,P0^4的灯可以闪了,但闪烁频率有快,你这节拍为201ms是周期吗?用晶振频率是11.0592M测试的.


...选择定时器T1的工作方式2作为波特率发生器,
(3)对于方式1和方式3,波特率=2SMOD [(定时\/计数器T1的溢出率或独立波特率发生器的溢出率) \/32]。定时\/计数器T1用作波特率发生器时,一般工作在方式2。定时\/计数器T1的溢出率与辅助寄存器AUXR的T1x12位有关,当T1x12=0时,定时\/计数器T1的溢出率= (fosc\/12)\/( 256 - THl);当T1x12...

单片机的4种工作方式是什么?
2)、工作在计数方式 工作方式2与工作方式0、方式1的差别,在于工作方式2是一个8位的计数器。4 工作方式3 工作方式3仅对定时器T0有效。当定时器T0工作在方式3时,将16位的计数器分为两个独立的8位计数器TH0和TL0。当定时器T0工作在方式3时,定时器T1只能工作在方式0~2,并且工作在不需要中断...

定时器T1的工作方式有哪几种呢?
由于方式二最大计数值只能是256,显然装不下50000,故可以选一个比较小的计数值,做多次循环就可以做到。选用计数个数为200,那么循环250次就可以了。C语言程序:include <Reg52.h> void main (void){ TMOD = 0x20;TH1 = -200;TL1 = -200;TCON = 0x40;IE = 0x88;while(1);} void T1_...

已知定时器T1设置成方式2,用作发生器,系统时钟为6MHZ,可能产生的最高最...
定时器T1设置成方式2,用作发生器,系统时钟为6MHZ,可能产生的最高波特率为0.125Mbps,最低波特率为244bps。波特率计算在bai串行通信中,收发du双方对发送或接收的数据速率要有一定的zhi约定,我们通过软件对MCS—51串行口编程可dao约定四种工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3...

89系列单片机的串行通信有哪几种工作方式?
89系列单片机的串行通信有4种工作方式:方式0是同步移位寄存器方式,帧格式8位,波特率固定为fosc\/12。方式1是8位异步通信方式,帧格式10位,波特率可变:T溢出率\/n(n= :32或16)。方式2是9位异步通信方式,帧格式11位,波特率固定: fosc\/n(n=32 或16)。方式3是9位异步通信方式,帧格式11位,...

已知89s51单片机时钟振荡频率为11.0952MHz,选用定时器T1工作于...
首先单片机的时钟振荡频率应为11.0592MHz,因为这个频率容易得到准确的波特率。波特率的计算方法为:其中SMOD:倍增,由寄存器设定 Fosc:振荡器频率 K:定时器的位数 Tc是定时器预装的初值 参考资料:上学时个人笔记

...器T0工作于方式2,实现0.5ms定时;定时器T1,工作于方?
2、计算定时器初值:要实现0.5ms定时,需要定时器T0计数500次,因此初值为 65536 - 500 = 65036 (0xFC1C)。对于定时器T1,由于题目中没有给出需要实现的定时时间,无法直接计算出初值,但是可以选择合适的工作方式和预分频器来满足定时要求。一般而言,定时器T1可选择方式1、方式2、方式3和方式12来...

求单片机高手编写一个串口通信接受字符程序,用汇编语言. 急急急...
ORG 00H AJMP MAIN ORG 23H AJMP URT ;串口中断 ORG 30H MAIN:MOV SP,#60H MOV R0,#50H MOV TMOD,#20H ; T1工作方式2 SETB EA ;开总中断 ACALL URTINIT ;串口初始化 AJMP $ ;等待串口中断 URT: ;串口中断每次只收1 个字节,未完继续进入中断,接收。PUSH ACC JNB...

mcs-51单片机计数器的四中方式是哪些
计数器来用,需要控制,计满后溢出需要有溢出标记,T0被分成两个来用,那就要两套控制及、溢出标记了,从何而来呢?TL0还是用原来的T0的标记,而TH0则借用T1的标记。如此T1不是无标记、控制可用了吗?是的。一般情况处,只有在T1以工作方式2运行(当波特率发生器用)时,才让T0工作于方式3的。

有关单片机定时器的使用和定时器的介绍
方式2为自动重装初值的8位计数方式。在方式2下,当计数器计满255(FFH)溢出时,CPU自动把TH 的值装入TL中,不需用户干预。因此特别适合于用作较精确的脉冲信号发生器。方式3只适用于定时器\/计数器T0,定时器T1方式3时相当于TR1=0,停止计数。工作方式3将T0分成为两个独立的8位计数器TL0和TH0 。...

苏州市19814948129: 设8051单片机晶振频率为6MHZ.定时器T1工作于方式2.要求8051以中断方式工作并在P2.0引脚输出周期为400微秒 -
乾翠复合: 定时器T1的工作方式2能够自动回复初值,要想单片机工作在该种方式下,则工作方式控制寄存器TMOD设置为00100000,要想使用中断的工作方式,则相应的设置好TCON,IE,IP几个寄存器的值就好了,输出周期为400微妙可以使用软件编程用延时程序实现即可.大体上就是这样,不知能否帮助你...

苏州市19814948129: 用单片机设计定时器T1,工作方式2中断方式优先级为高,实现P1.0输出1khz,占空比可调的方波 -
乾翠复合: #include <reg52.h> unsigned char timer1; sbit Tout=P1^0; void system_Init() { TMOD|= 0x21; // T1为方式2定时器 TH1 = 156; // 定时初值为18,每100微秒中断一次. TL1 = 156; TR1 = 1;IE =0x8A; // 允许T1中断EA=1; // 开放中断 } void main(...

苏州市19814948129: 已知晶体振荡器频率fosc=6MHZ,要求某51单片机应用系统用T1方式2定时中断方式,使P1 -
乾翠复合: //1KHZ也即周期为1ms 单片机的机器周期为(1/6*1000000us)*12=2us 定时器计时一次时间为2us //1KHZ的方波 需计时250次切换P1.2的状态 #include<reg52.h> sbit P1_2 = P1^2; void int1() interrupt 3 {P1_2 = ~P1_2; } void main() {EA = 1;P1_2 = 1;ET1 = 1;TR1 = 1;TMOD = 0x20;TH1 = 256-250;TL1 = TH1;while(1); }

苏州市19814948129: 设8051单片机晶振频率为6MHZ.定时器T1工作于方式2.要求8051以中断方式工作并在P2.0引脚输出周期为400微秒的方波.试:计算初值、编写含有初始化功能的主程序和完成方波输出的中断服务程序
乾翠复合:ORG 00H JMP MAIN ORG 001BH CPL P2.0 RETI MAIN: MOV TMOD,#20H MOV TL0,#156 MOV TH0,#156 SETB ET0 SETB TR0 SETB EA JMP $ 这个才是ORG 00H JMP MAIN ORG 001BH CPL P2.0 RETI MAIN: MOV TMOD,#20H MOV TL1,#156 MOV TH1,#156 SETB ET1 SETB TR1 SETB EA JMP $

苏州市19814948129: 要求利用T1方式2定时中断,从P1口输出频率为1KHZ的方波信号驱动蜂鸣器,设晶振频数为6MHz,c语言版 -
乾翠复合: #include " reg52.h " sbit BEEP = P1 ^ 0; void main( void ) { TMOD = 0x20; TH1 = 0x00; TL1 = 0x06; EA = 1; ET1 = 1; TR1 = 1; BEEP = 1; while(1); } void Timer1( void ) interrupt 3 { BEEP = ~BEEP; }

苏州市19814948129: 那个题目最后怎么解决的啊,帮我解决一下好嘛,谢谢了.用T1,工作方式2,定时器中断,实现发光二极管D0闪烁 -
乾翠复合: #include <REGX51.H> bit Led_Stat = 0; unsigned int num = 0; void main() { P0 = 0; P1 = 0x0c; P1_2 = 0; TMOD = 0x20; TH1 = 256-201; TL1 = 256-201; EA = 1; ET1 = 1; TR1 = 1; while(1) { P0_4 = Led_Stat; } } void T1_timer()interrupt 3 { num ++; if(num == 1000) { Led_Stat =~ Led_Stat; num = 0; } } 你是哪个学校的哟,怎么也有这个问题

苏州市19814948129: 已知单片机的晶振频率6MHZ,试利用定时器T1产生的中断,使P1.2引脚输出周期为2S -
乾翠复合: 基本思路为50ms*40=2s定时#include sbit out=P1^2; void main { TOMD = 0X10; //配置定时器1工作于方式一 TH1 = (65536-50000)/256; //高八位装入初值 TL1 = (65536-50000)%256; //低八位装入初值 ET1 = 1; //开定时器0中断 EA = 1; //开...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网