永发信息网

单片机的时钟频率采用6MHZ,利用T0采用定时器方式2

答案:4  悬赏:0  手机版
解决时间 2021-04-02 15:35
  • 提问者网友:寂寞撕碎了回忆
  • 2021-04-01 21:34
单片机的时钟频率采用6MHZ,利用T0采用定时器方式2
最佳答案
  • 五星知识达人网友:不想翻身的咸鱼
  • 2021-04-01 22:51
输出 200us 的方波,只需定时 100us。
每当到了 100us,对 P1.2 端取反,即输出为 200us 的方波。

时钟频率采用6MHz,机器周期则是 2us。
定时 50 个机器周期,即达到了 100us。

可以使用定时方式2,能够自动装入初始值。
初始值=256 - 50 = 206。

全部程序如下:

ORG 0000H
SJMP START
ORG 000BH
CPL P1.2
RETI
START:
MOV TMOD, #02H
MOV TH0, #206
MOV TL0, #206
MOV IE, #82H
SETB TR0
SJMP $

END
全部回答
  • 1楼网友:老鼠爱大米
  • 2021-04-02 02:01
void InitTimer0(void)
{
TMOD = 0x02;
TH0 = 0x00;
TL0 = 0x0FB;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main(void)
这是10US的程序
  • 2楼网友:不想翻身的咸鱼
  • 2021-04-02 00:37
一点点改正:

#include
sbit P1_2=P1^2;
void InitTimer0(void)
{
TMOD = 0x02;
TH0 = 0x0CE;
TL0 = 0x0CE;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main()
{
InitTimer0();
while(1); //让程序一直运行
}
void T0() interrupt 1
{
P1_2=~P1_2;
TH0 = 0x0CE; //必须重新给计时器赋值
TL0 = 0x0CE;
}
  • 3楼网友:舍身薄凉客
  • 2021-04-02 00:23
#include
#define uchar unsigned char
#define uint unsigned int
sbit P1_2=P1^2;
void InitTimer0(void)
{
TMOD = 0x02;
TH0 = 0x0CE;
TL0 = 0x0CE;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void main()
{
InitTimer0();
}
void T0() interrupt 1
{
P1_2=~P1_2;
}
周期为200US,只需P1^2每100us取反一次。时钟为6MHz。机器周期为2us,则初值X=256-100*6/12=206=0x0ce
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯