当前位置:首页 » 编程语言 » c语言t0

c语言t0

发布时间: 2022-09-05 20:15:14

① 单片机c语言编程问题,功能是用定时器T0使发光管间隔200ms闪烁,定时器T1使数码管循环显示0-59.

……
num2++;
if(num2==20)
{
num2=0;//少了这句,num2会持续增长,长到255后,才变成0。
……

num2:0~255,只有在=20时,数字才加一。
那么,就是约12.5秒,数字才加一。

② 用52单片机C语言编写程序,实现00~59计时。要求用T0,工作方式1。

#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit la=P2^6; //段选
sbit wela=P2^7; //位选
uchar shi,ge,num1,num2; //变量
uchar code table[]={0x3f,0x06,0x5b,0x4f, //共阴极字型码
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint x) //延时子程序
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<120;j++);
}
void init()
{
TMOD=0x01; //设置定时器0的工作方式
TH0=(65536-50000)/256; //装初值
TL0=(65536-50000)%256;
EA=1; //开总中断
ET0=1; //开定时器0中断
TR0=1; //启动定时器0
}
void display() //显示子程序
{
la=1;
P0=table[ge]; //送段选数据
la=0;
P0=0xff; //送位选数据前关闭所有显示
wela=1;
P0=0xfe; //送位选数据
wela=0;
delay(5); //延时

la=1;
P0=table[shi];
la=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(5);
}
void main()
{
init();
while(1)
{
display();
}
}
void timer() interrupt 1
{
TH0=(65536-50000)/256; //重装初值
TL0=(65536-50000)%256;
num1++;
if(num1==20) //到了20次,1秒时间到
{
num1=0; //清0重新计数
num2++;
if(num2==60)
num2=0;
P1=0x00;
delay(500);
P1=0xff;
shi=num2/10; //把一个2位数分离后分别送数码管显示
ge=num2%10; //十位和个位
}
}

试了的,可以放心,采纳吧!

③ C语言实现单片机计数器T0计数值的读取

当然是了,如果是16进制就乘以0xFF了,这里是256得到的就是十进制,而且TH0以及TL0也必须是十进制
不管是什么进制,只要表达的数一样就行,进制不是问题

④ c语言中,T0与T1的中断信号分别是多少

C语言中,定时器T0和T1要产生中断的话,需要初始化比如:
init()
{
TMOD=0x11
TH0=TH1=(65536-10000)/256
TL0=TL1=(65536-10000)%256;
TR0=1;
TR1=1;
ET0=1;
ET1=1;
EA=1;
}
之后中断号分别为:
T0:
voidt0isr()interrupt1
{...........}
T1:
voidt1isr()interrupt3
{............}

⑤ 关于单片机C语言的定时器T0,T1的问题

一般向上计数的单片机定时器,都是从当前值开始计数,一直计数到0xffff(65535)的时候,再来一个脉冲就产生溢出,所以初值一般都是用0x10000减去需要计数的值得来的,0x10000就等于十进制的65536

⑥ 编写程序,定时计数器T0,方式2定时,在P1.0输出周期是400us,占空比为10;1的矩形脉冲。C语言编程

在等于2的地方少一个=吧。
因为在一个周期里首先需要一个高电平,之后变成低电平。之后不再变化。
初始值为0,当cnt==1时p1.0求反得高电平。
在cnt==2时再求反得低电平,之后不再变化

⑦ 求单片机c语言高手 我用定时器T0 方式1 让数码管每隔1s变一个数字,不知哪出问题了如下:

for(j=0;j<10;j++)
P1=num[j];

不能这样,可以改成
j++;
P1=num[j];

⑧ 单片机c语言编程t0输入脉冲LCD显示计数

#include#defineuintunsignedintuintnum,num1;voidmain(){TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;while(1);}voidtime_t0interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;num++;if(num==设定时间为50ms的整数倍){TR0=0;返回数;}}

⑨ 51单片机使用T0和T1外部脉冲计数,C语言如何编程

1、使用T0和T1外部脉冲计数,控制两个电机,到1700个脉冲电机停止,
--统计脉冲个数,用外部中断更好。
--T0和T1,留着定时用。
用四个按键控制,按键1控制电机正转,按键2控制电机反转,按键3控制电机1正转,按键4控制电机2正转。


2、例程:

#include<reg51.h>
sbitk1=?;//自己定义
sbitk2=?
sbitk3=?
sbitk4=?
sbitDIAN1=?
sbitDIAN2=?
sbitDIAN3=?
sbitDIAN4=?
sbitSEN1=?
sbitSEN2=?
voiddelay(unsignedintx)
{
unsignedintm,n;
for(m=x;m>0;m--)for(n=115;n>0;n--);
}
voidmain(void)
{
TMOD=0x55;
IE=0x8a;
while(1){
if(!k1){
delay(10);
if(!k1){
while(!k1);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=0;DIAN2=1;
SEN1=1;
TR0=1;
}
}
if(!k2){
delay(10);
if(!k2){
while(!k2);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=1;DIAN2=0;
SEN1=1;
TR0=1;
}
}
if(!k3){
delay(10);
if(!k3){
while(!k3);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=0;DIAN4=1;
SEN2=1;
TR1=1;
}
}
if(!k4){
delay(10);
if(!k4){
while(!k4);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=1;DIAN4=0;
SEN2=1;
TR1=1;
}
}
}
}

⑩ 求一个51单片机用T0做计数器的C语言代码。

//timer0设定为计数器模式1
TMOD &= 0xf0; //清除原来的设定
TMOD |= 0x05; //T0为计数器模式1
TH0 = 0;
TL0 = 0; //从0开始计数
TR0 = 1; //使能T/C0
// IE |= 0x82; //Timer0中断使能,不需要就注释掉该行
另外执行不了有可能是你的实验板没有连接T0引脚

热点内容
战地配置有哪些 发布:2024-10-18 16:44:48 浏览:308
中国联通短信提示服务密码未完善是什么意思 发布:2024-10-18 16:42:17 浏览:709
c语言中非 发布:2024-10-18 16:21:20 浏览:143
招编程人员 发布:2024-10-18 16:19:37 浏览:422
什么数据类型存储图片 发布:2024-10-18 16:19:28 浏览:749
电脑维护服务器 发布:2024-10-18 16:18:51 浏览:435
取舍算法 发布:2024-10-18 16:12:36 浏览:249
安卓数据线一般在什么价位 发布:2024-10-18 16:09:25 浏览:732
老式安卓机怎么插卡 发布:2024-10-18 15:52:35 浏览:338
pc搭建nas服务器 发布:2024-10-18 15:51:59 浏览:266