matlab计数器清零,51单片机计数器清零

本文档介绍了一个基于C语言的程序,该程序使用P2.0端口产生脉冲,并通过T0定时器进行计数。当计数达到1000时,程序尝试清零计数值并关闭计数器,但在某些情况下无法成功。程序中包含了串行初始化、LCD1602显示以及延时函数等模块,旨在验证T0计数器的正确性。当计数值小于1000时,会在LCD上显示计数值,否则尝试重新初始化计数器。
摘要由CSDN通过智能技术生成

T0设为计数器,P2.0产生脉冲,计数到1000后清零计数值并关掉计数器,关不掉也不能清零,请高手指教//the purpose of the program is to verify the counter of T0 generated by P2.0,

//T0 is counter, T1 decided the serail port rate and T2 is timer

#include

#include

#include

#include

#define uint unsigned int

#define uchar unsigned char

uint rd_t0=0;

uint disp[4];

sbit pulse=P2^0;

void main()

{

uint i,j;

serial_init();

//timer0_init();

lcd1602_init();

while(1)

{

for(j=0;j<9;j++)

{

pulse=0;

delay10us(10);

pulse=1;

delay10us(10);

}

rd_t0=TH0*0x100+TL0;

disp[0]=rd_t0/10000;

disp[1]=(rd_t0-disp[0]*10000)/1000;

disp[2]=(rd_t0-disp[0]*10000-disp[1]*1000)/100;

disp[3]=(rd_t0-disp[0]*10000-disp[1]*1000-disp[2]*100)/10;

disp[4]=rd_t0-disp[0]*10000-disp[1]*1000-disp[2]*100-disp[3]*10;

if(rd_t0<1000)

{

for(i=0;i<5;i++)

{

senddatabyte(disp[i]+'0');

delay10us(10);

}

delay10us(6000);

//delay10us(60000);

sendcmdbyte(0x0c);

sendcmdbyte(0x01);

sendcmdbyte(0x06);

}

else

{

TMOD=0x27;

TR0=0;

TH0=0;

TL0=0;

rd_t0=0;

for(j=0;j<5;j++)

{

*(disp+j)=0;

}

//TR0=1;

//break;

}

}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值