导航:首页 > 操作系统 > 单片机计数器c语言

单片机计数器c语言

发布时间:2022-08-27 05:18:25

单片机C语言关于定时计数器程序运行时序问题

这个和你设置的定时器的工作模式有关系,你要在定时时间到后,依然想要TH0=0xfc; TL0=0x18。这两个寄存器值存在的话,你就要设置定时器的工作模式为:自动重装初值

㈡ 设单片机系统的晶振为12MHz,要求使用定时计数器1,用C语言 编写程序实现

系统晶振为12MHz时,定时器的计数脉冲周期即为 1uS;
要求输出周期为200us,占空比为50% 的方波,即方波的高电平时间=100uS,低电平时间=100uS。
所以每定时100uS便产生一次中断,并将输出信号状态翻转一次;
sbit cp=P1^7;
void timer1 interrupt 3
{ cp=~cp; }
void main()
{
TMOD=0x20; // 定时器1采用方式2 进行定时;
TH0=256-100; //定时100uS;
TL0=TH0;
EA=1;ET1=1;TR1=1;
cp=1;
while(1){}

}

㈢ 基于51单片机的简易计数器设计c程序

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9
uchar scanled;
uchar disdat[4];
uint ss,time;
sbit led=P1^0;
void dischg()
{
disdat[3]=ss%10;
disdat[2]=(ss/10)%10;
disdat[1]=(ss/100)%10;
disdat[0]=(ss/1000)%10;
}
void t0isr() interrupt 1
{
ss++;
dischg();
}
void t1isr() interrupt 3//显示
{
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
P2=1<<scanled;
P0=~ledtab[disdat[scanled]];
scanled++;
scanled%=4;
time++;
if(time>100){time=0;led=~led;}
}
main()

{
TMOD=0x16;
TH0=0xff;
TL0=0xff;
TH1=(65536-5000)/256;
TL1=(65536-5000)%256;
TR1=1;
TR0=1;
ET0=1;
ET1=1;
EA=1;
led=0;
scanled=0;
ss=0;
dischg();
while(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引脚

㈤ 51单片机设计两位计数器C语言

#include "reg52.h"
#define uchar unsigned char

#define uint unsigned int
#define dataport P1
sbit s1=P2^0;
sbit s2=P2^1;
sbit s3=P2^2;
sbit wei1=P2^4;

sbit wei2=P2^5;
signed char a=0;

uchar TABLE[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

//延时子程序
void delay1ms(uint t)
{
uint i;
uint j;
for(i=0;i<t;i++)
for(j=0;j<116;j++);
}
//显示子程序
void display(uchar n)
{
wei1=1;

dataport=TABLE[n/10];
delay1ms(1);
wei1=0;

wei2=1;
dataport=TABLE[n%10];
delay1ms(1);
wei2=0;
}

void main(void)//主程序
{
while(1)
{
if(s1==0)
{
delay1ms(20);
if(s1==0)
{
a++;
}
}
if(a=100)a=0;
if(s2==0)
{
delay1ms(20);
if(s2==0)
{
a--;
}
}
if(a<0)a=99;
if(s3==0)
{
delay1ms(20);
if(s3==0)
{
a=0;
}
}
display(a);
}
}

㈥ 51单片机按键计数器C语言编程

#include<reg51.h>
#defineucharunsignedchar;
uchardistab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00};//0到f
ucharnumber,dat,dis[4];
voidt0isr()interrupt1
{
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
number++;
number%=3;
switch(number)
P1=0x20<<number;
P0=distab[dis[number]];
}
voidint0isr()interrupt0
{
dat++;
dat%=1000;
dis[0]=dat%10;
dis[1]=dat%100/10;
dis[2]=dat/100;
}
main()
{
TMOD=0x01;
TH0=(65536-5000)/256;
TL0=(65536-5000)%256;
TR1=1;
ET1=1;
EX0=1;
IT0=1;
EA=1;
while(1);
}

㈦ 用c语言编写一个计数器(单片机为51型,数码管为共阴)要求有三个按键分别控制停止、加、减

一看到你说是计数器,又看到你要求有停止功能,意思是把Timer改为计数器,然后可以通过一个键停止计数对吧?
如果这样的话挺简单的,51单片机的计数器io口记得好像是P3^0和P3^1,但不管怎么,首先设置TMOD,将C/T位置1,这就改为计数器了,然后可以编写函数来对一个变量进行加减;同样利用51单片机的外部中断也可以实现计数功能,打开外部中断开关,在外部中断服务函数对计数变量进行加减;最简单的,直接利用io口高低电平变化来进行计数,编写if函数,只要某个io口电平变化了,就对计数变量进行加减。
如果你对这个有点陌生,那么回复我一起讨论或者我可以帮你写程序。
希望我的回答能帮助到你。

㈧ 单片机计数器编程如何计数脉冲,用C语言

每50ms来了多少脉冲,那定时器就不能50ms中断一次,尽量快的中断会比较好,2个变量计数,一个计算50ms,一个累加脉冲

㈨ 用C语言如何开51单片机的计数器,最好编个实例程序

#include <reg51.h>
#define uchar unsigend uchar
#define uint unsigned int
unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66,~0x6D,~0x7D,~0x07,~0x7F,~0x6F,~0x77,~0x7C,~0x39,~0x5E,~0x79,~0x71};//数码管段码

void main()
{
uint k;
TMOD=0X50;//设置模式为1,计数模式
TH1=0X00;
TL1=0X00;//初始值设定
IE=0X00;//关全局中断
TR1=1;//开定时计数器1运行
while(1)
{

if(TL1==16)//进行判断,为16时,计数值归零
TL1=0X00;
k=TL1;
P0=LED7Code[k];//数码管进行显示
}
}
此程序目的见http://..com/question/350774230.html

㈩ c51单片机用c语言如何使用计数器触发中断

你这样写当然不行了,要想使用计数器触发中断,必须要靠"外力"才行,也就是说要在定时器问对应IO口输入脉冲才行,按照你的要求,10个脉冲中断一次,执行一次清零。要实现这个,可以每计算一次人为发送一个脉冲给定时器IO。

阅读全文

与单片机计数器c语言相关的资料

热点内容
如何确认方舟编译器 浏览:661
奶粉源箱源码什么意思 浏览:173
台州程序员兼职一般去哪些网站 浏览:386
旧版本怎么下载到新的安卓 浏览:964
flash个人网站源码下载 浏览:723
javasocketbyte 浏览:264
素描基础教程pdf 浏览:541
香港商报pdf版 浏览:426
安卓手机怎么录制吉他弹奏 浏览:382
ie文件夹缓存在哪里 浏览:264
围棋排名算法 浏览:963
zigbee加密算法 浏览:464
柏杨版资治通鉴pdf 浏览:395
事业编程序员下班时间 浏览:10
linux中命令大全 浏览:38
pic单片机学习网站 浏览:163
843除6的算法 浏览:377
arduino编程视频 浏览:744
pdf背景绿色 浏览:612
记事本dos命令 浏览:275