导航:首页 > 操作系统 > 单片机计数程序

单片机计数程序

发布时间:2022-01-22 17:54:17

㈠ 求一个单片机计数器程序,

#include<reg51.h>
#defineucharunsignedchar
uchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
sbitkey=P3^7;
main()
{
uchari,key;
while(1)
{
if(key==0)
{
while(key==0);
i++;
i%=10;
P0=table(i);
}
}
}

㈡ 51单片机计数器编程

利用红外对管作感应器的话,只要将单片机设置为计数模式就行,然后红外接收管接到单片机的P3^4或者P3^5口,这是51系列单片机计数功能口,然后设置好TMOD寄存器和TCON寄存器选择工作方式和触发方式即可,计数变量定义为全局变量,然后传递给显示函数。 如有不懂的地方随时回复我。 希望我的回答能帮助到你。

㈢ 单片机计数器程序

说实话,用了C以后,对于超过20行的汇编,实在是不想看了....
而且,兄弟一句注释都没有,这不是好习惯

㈣ 51单片机计数程序怎么写

CLR P0.1 ;初态,P0.1=低
MOV 30H,#00H ;计数器=0
START: JB P0.0,$ ;等待P0.0变低
SETB P0.1 ;变高
INC 30H ;计数器加一
ACALL DISP ;调用显示程序,显示30H单元数字
JB P0.2,$ ;等P0.2变低电平
CLR P0.1
DEC 30H
ACALL DISP
AJMP START
这个程序可以完成你的要求,
但是,但是,但是,根据你的叙述,计数器只会在0-1之间变化。
因为你要求:
“。。。将p0-1口至高电瓶,一直持续到p0-2口低电瓶一次。。。”

㈤ 51单片机 按键按下去 计数一次 程序应该怎么写

在按键按下后,用循环语句,等待抬起计数

if(按键按下)
{
延时;
if(按键按下)
{
while(按键没有松开);//如果按键没有松开,程序会停在这里
count++;//按键松开后,程序会运行到这里,计数值加1
}
}

㈥ 单片机定时计数程序

搞一个定时中断,到时间了测一次脉冲数。

㈦ 单片机程序中的计数程序应用讲解

这个要求不过分,发段现成的小注释下给你吧:
没注释的就是和计数无关的。
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar DSY_CODE[]=
{
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f
};
uchar Count = 0;
void main()
{
P0 = 0x00;
P2 = 0x00;
TMOD = 0x06;//这个是定时器的初始化 TMOD= 0000 0110 ,指定T0作为八位的计数器
TH0=255;
TL0=255; //这两个是计数初值。
ET0=1;
EX0=1;
EA =1;//这三行是开中断
IP =0x02;
IT0=1;
TR0=1;//这一行,是启动T0
while(1)
{
P0 = DSY_CODE[Count/10];
P2 = DSY_CODE[Count%10];
}
}
void Clear_Counter() interrupt 0
{
Count = 0;
}
void Key_Counter() interrupt 1
{
Count = (Count + 1) %100;//这个地方,是1号中断,也就是T0的中断,每当次数到了,就会执
//行这里
}

你先看看,不懂就追问,我会回答你的

㈧ 单片机计数程序问题

把电路中显示器周边的三极管、电阻删除,直接用IO接口,连接显示器。

再试试下列程序。

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
uchar i, dat[3];
uint n,mb;
uchar code wei[3]={0xfb,0xfd,0xfe};//位驱动码
uchar code an[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//字型码
sbit P3_2=P3^2;
void delay(uint x)//延迟程序
{
uint a,b;
for(a=0;a<20;a++) for(b=x;b>0;b--);
}

void init() //初始化程序
{
TMOD=0x01; //定时器0工作方式1
TH0=0xec; //5MS每次中断
TL0=0x78;
EA=1;
ET0=1;
TR0=1;
EX0=1; //外部中断0允许
IT0=1; //外部中断0边沿触发
}

void main()
{
init();
while(1) {
for(i = 0; i < 3; i++) {
P2 = wei[i];
P0 = ~an[dat[i]];
delay(30);
P2 = 0;
}
}
}

void External0() interrupt 0//外部中断0
{
n++;
}

void Timer0() interrupt 1//定时中断程序
{
TH0 = 0xec;
TL0 = 0x78;
if(n == 0) dat[0] = dat[1] = dat[2] = 0;//5秒检测不到 n复位
else {
mb = 12000 / n;
dat[2] = mb % 10;//取个位
mb = mb / 10;
dat[1]=mb % 10;
dat[0]=mb / 10;
}
n = 0;
}

㈨ 单片机计数程序

#include <reg52.h>
sbit Switch = P2^0;
sbit P3_0 = P3^0;
sbit P3_1 = P3^1;
#define uchar unsigned char
#define uint unsigned int
bit key_state;
//***********************************************************
void mDelay(uint temp)
{uint i;
while(temp!=0)
{temp--;
for(i=0;i<5000;i++);
}
}
//************************************************************
//************************主程序******************************
void main()
{ uchar count=0;
P3_0=1;
P3_1=1;
while(1)
{
if(Switch==1) key_state=1; else key_state=0;
if((Switch==0)&&(key_state==1))
{key_state=0;
count+=1; if(count==10)
{
P3_1=0;mDelay(200);//调括号的数来完成1S。
P3_0=0;
}
}
}
}
//此程序没有经过实际验证.给你一个参考吧.是按你的功能写的.你可以下载进试验,有问题请告知.应该能达到你的要求.不行加我的网络HI啊

㈩ 51单片机的计数器程序

你得在P3.5引脚外部加计数脉冲信号呀,T1才能计数的。就用你的程序,仿真的结果如下图,并用数码管显示了TL1=1的状态了。

阅读全文

与单片机计数程序相关的资料

热点内容
asp压缩mdb 浏览:670
node开源论坛源码 浏览:8
单片机比手机芯片还贵 浏览:35
java课表 浏览:555
如何在pdf里面修改 浏览:929
橙光制作器档案框在哪个文件夹 浏览:991
php如何抓取网页数据 浏览:642
计数器单片机 浏览:966
游戏aoi算法 浏览:845
phpmysqlint 浏览:913
怎么从appstore商城买东西 浏览:185
大秀直播平台源码 浏览:424
java视屏 浏览:934
电脑中如何给程序加密 浏览:240
java排序容器 浏览:942
职称证书在哪个app下载 浏览:363
四九算法算男女 浏览:660
javawindows8 浏览:498
2021世界程序员节 浏览:486
php翼支付 浏览:884