C51单片机程序

TH0 = 0xf6;
TL0 = 0xff;
TH1 = 0xfd;
TL1 = 0xfd;
TMOD = 0x21;
PCON = 0x00;
WDCON = 0x00;
SCON = 0x50;
SCON1 = 0x40;
这段程序是什么意思?起的作用是什么?为什么要这么写?

TH0 = 0xf6;

TL0 = 0xff;

上两行是定时器/计数器T0的初值,因为T0是16位的,所以用TH0表示高八位,TL0表示低八位

TH1 = 0xfd;

TL1 = 0xfd;

T1初值

TMOD = 0x21;

定时器/计数器模式控制寄存器  如图

GATE=1时,由外部中断引脚INT0、INT1来启动定时器T0、T1

GATE=0时,仅由TR0,TR1置位分别启动定时器T0、T1。

C/T=0时为定时功能,C/T=1时为计数功能

M0、M1——方式选择功能

M1M0 工作方式 计数器模式 TMOD(设置定时器模式)

  0 0 方式0 13位计数器 TMOD=0x00

  0 1 方式1 16位计数器 TMOD=0x01

  1 0 方式2 自动重装8位计数器 TMOD=0x02

  1 1 方式3 T0分为2个8位独立计数器,T1为无中断重装8位计数器 TMOD=0x03

PCON = 0x00;

PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器

WDCON = 0x00;清狗

SCON =  0x50;

SCON1 = 0x40;

串口控制寄存器

追问

TMOD=0x21;表示的是T1是方式2,T0是方式1吗?是不是TR0=1,TR1=1才启动T0和T1?

追答

TMOD=0x21,表示的是T1是方式2,T0是方式1。
TR0=1,TR1=1时启动T0和T1,但是还跟GATE有关,当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1;当GATE=1,且INT1为高电平时,TR0置“1”启动定时器0;当GATE=0,TR0置“1”启动定时器0。
你先让GATE=0,就是你说的那样了。

追问

能否加下QQ?我还有很多问题不懂。。

追答

1012638939 注明你是谁

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-10-13
TH0 = 0xf6; //T0定时器初值 -2303
TL0 = 0xff;
TH1 = 0xfd; //波特率9600
TL1 = 0xfd;
TMOD = 0x21; //定时器0位模式1,定时器2位模式2
PCON = 0x00; //波特率不加倍
WDCON = 0x00; //清狗
SCON = 0x50; //串口0工作与模式1,启动接收
SCON1 = 0x40; //串口1工作与模式1,用于发送本回答被网友采纳
第2个回答  2011-08-23
这些是单片机寄存器的初始化 ,要学习,必须根据每个寄存器每一位代表什么具体意思来判断,TH0 TL0 是定时器0 的高8位 和低8位,其他的同理,至于为什么要那么写,是要看整个程序要实现什么具体的功能来判断,需要用到单片机的什么资源,就必须得线初始化,慢慢学把,51系列单片机还是挺简单的。
第3个回答  2011-08-24
定时/计数器,TH高八位,TL低八位,T0是计时,T1是串口通讯
相似回答