单片机的时钟频率采用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
每当到了 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的程序
{
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;
}
#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
#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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯