采用方式1进行计数,则 X=M-N=65536-50000=15536H=0C350H
程序编写如下:
M.OV TMOD, #05H; 设置T0工作方式,定时,方式1
M.OV TH0,#0C3H; 写入计数器初值
M.OV TL0,#050H;
S.ETB TR0;启动T0
L.OOP: JBC TF0,$; 查询定时器溢出标志
M.OV TH0,#0C3H;
M.OV TL0,#050H
C.PL P1.7
S.JMP LOOP;
E.ND
也可以用C语言编写:
用定时/计数器T0从P1.7输出周期为5s的方波,晶振频率为6MHz。
#include
#define uchar unsigned char
#define uint unsigned int
S.bit D1=P1^0;
U.char a;
V.oid init() //初始化 {
T.MOD=0x01; //选择定数计数器0的工作方式为16位定时器
T.H0=(65535-50000)%256; //赋初值,定时100ms
T.L0=(65535-50000)/256;
E.A=1; //中断控制允许
E.T0=1;
a=0;
TR0=1; //启动定时器0 }
void time0() interrupt 1 //定时器0中断函数 {
TH0=(65535-50000)%256; //赋初值,定时100ms TL0=(65535-50000)/256; a++;
TR0=1; }
void main()
{
init();
while(1)
{
while(a==25)//半个周期(2500ms)时,P1.7上的电平跳变一次。
{
a=0;
P1.7=~P1.7; //取反 } } }