求单片机51系列的计数器C语言程序,要求24进制,可进位

作者&投稿:大帝 (若有异议请与网页底部的电邮联系)
用51 单片机的外部中断和定时计数器测下降沿个数C语言程序~

好象不是很难但很麻烦

从51单片机 RAM 数据存储器分布图可知,从80H—FFH地址单元(也是128个字节)为特殊寄存器(SFR)单元,地址从00H—7FH单元(共128个字节)为用户数据RAM,用户数据单元,只指用户在编程时可以定义的寄存器,一般用于计算、暂存或转换作用,如没有这些单元,那基本上单片机就没有作用了
所以作为单片机选型时,RAM的大小也直接决定了它的成本,不存在楼主所说的浪费现象,可以根据自己程序的复杂度来决定选型RAM的大小。
51单片机的RAM分布如下图

#include < reg51.h >
#include < intrins.h >sbit key = P2^0;
const unsigned char LED7Code[]={
0xC0, // 0
0xF9, // 1
0xA4, // 2
0xB0, // 3
0x99, // 4
0x92, // 5
0x82, // 6
0xF8, // 7
0x80, // 8
0x90, // 9
0x88, // A
0x83, // B
0xC6, // C
0xA1, // D
0x86, // E
0x8E // F
};
unsigned char count = 0;
unsigned char timer1s_flag;
unsigned char hw,lw;
unsigned char flag;void delay(unsigned char n);
/*********************************************************/
void main()
{
TMOD=0x01 ;
TH0=0xed ;
TL0=0xff ;
EA=1;
ET0=1;
TR0=1 ;while(1)
{
if(timer1s_flag>=100){
timer1s_flag = 0;
}//500msif(key == 0)
{
delay(10);
if(key==0){

count++;
if(count==24)
count =0;
hw = (count+1)/10;
lw = (count+1)%10;
}
while(key==0);
}
}
}
void delay(unsigned char n)
{
unsigned char i,j;
for(i=n;i>0;i--)
{
for(j=0;j<150;j++) ;
}

}
/*********************************************************/
// 定时器0中断服务程序.
/*********************************************************/
void timer0() interrupt 1 using 2
{
TH0=0xee ;
TL0=0x04 ;timer1s_flag++;if(flag==0){
P3=0X40;
P1=LED7Code[hw];
flag = 1;
}
else{
P3=0X80;
P1=LED7Code[lw];
flag = 0;
}
} 这个类是的需要完整的和Proteus仿真图,扣 我!


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

51系列单片机的周期是多少?
12\/11.0592微秒,51单片机的一个机器周期等于12个振荡周期(晶振频率的倒数)。1.大部分51单片机1个机器周期=12个时钟周期(或振荡周期),有些增强型的1个机器周期=1个时钟周期(或振荡周期),如stc12系列,stc15系列 2.51单片机的机器周期=1\/晶振频率;当晶振频率=11.0592MHz,1个机器周期=12个...

怎样用51单片机实现累加计时和倒计时,并用六个共阴极数码管显示出来。用...
51系列单片机内部有一个时钟电路(其核心时一个反相放大器),但并没有形成时钟的振荡信号,因此必须外接谐振器才能形成振荡。如何用这个内部放大器,可以根据不同的场合做出不同的选择。这样就对应了单片机时钟产生的不同方式:若采用这个放大器,产生振荡即为内部方式;若采用外部振荡输入,即为外部方式。方案一、内部方式...

单片机51系列内部包含哪些组件?
51单片机内部包含的功能组件及作用主要有:1、cpu主芯片(内部通过总线连接扩展的设备)2、时钟电路(为单片机提供震荡脉冲)3、电源电路(为单片机提供电源)4、内部数据存储器RAM(包括通用数据寄存器和专用寄存器SFR,主要是数据存储区。)5、程序存储器ROM(主要是存储程序,51系列有4K内部程序ROM,可以外...

51单片机的数字频率计
      由P3.4输入信号,低电平有效,触发T0外部中断。当T0触发中断的时候执行的程序。这里只进行了一个操作,t0++。所以,t0的值表示触发了几次中断,也就表示接受到的脉冲几次从0到65536。所以会有t0*65536。 另外,由于计时的机制是THO++、TL0++,所以,THOTL0就表示当前的...

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

51系列单片机篮球计分器代码怎么写?
以下是一个简单的51系列单片机篮球计分器代码:```c include <reg52.h> \/\/ 包含STC89C52RC系列单片机头文件 sbit key1 = P3^0; \/\/ 定义按键1引脚 s2 = P3^1; \/\/ 定义按键2引脚 sbit led1 = P1^0; \/\/ 定义LED1引脚 sbit led2 = P1^1; \/\/ 定义LED2引脚 unsigned...

求文章 51单片机
INTEL公司将MCS51的核心技术授权给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机,它是由美国ATMEL公司开发生产的。以后我们将用89C51、89S51来完成一系列的实验。MCS-51系列单片机 MCS-51系列单片机...

51系列单片机定时\/计数器初始化的四个步骤?
1、设置寄存器TMOD 2、计算初始值 3、开放中断 4、启动定时器

MCS-51单片机的定时器\/计数器工作于定时方式和计数方式的相同点和不...
单片机$ 51单片机定时器的原理 单片机与plc的区别 单片机原理及接口技术 其他类似问题2010-06-13 单片机定时\/计数器工作于定时和计数方式时有何异同点? 3 2014-12-01 MCS-51系列的8051单片机内有几个定时\/计数器?每个定... 22 2015-06-20 mcs-51单片机的定时器\/计数器和计数功能有什么不同 4 2013...

贵池区13045482166: 急求51单片机计数器的C程序!!! -
益弯润肠: #include "reg51.h" unsigned char time; void main() { EX0=1; //开外部中断 IT0=1;//设置边沿触发 EA=1; //开放全局中断 while(1) { P0=~time; // 通过P0口的LED显示出计数值(二进制形式) } } void INT_0() interrupt 0 { while(INT0==0); time++;//每按下一次计数加1.}

贵池区13045482166: 基于51单片机的简易计数器设计,求c语言程序! -
益弯润肠: #include<reg51.h>#define uchar unsigned char uchar code ledtab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};//0-9 unsigned char sec=0,scanled; unsigned char disdat[2]; sbit key1=P1^0; sbit key2=P1^1; sbit key3=P1^2; void ...

贵池区13045482166: 用51单片机仿真计数器,用c语言写程序,LCD1602显示,具体要求:按键按下开始计时,按键再次按 -
益弯润肠: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 ...

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

贵池区13045482166: 用c语言编写51单片机中断程序,要求p1.1低电平计数器加一 -
益弯润肠: sbit P1_1=P1^1; void t0_isr(void ) interrupt 1 //定时检测P1.1电平状态 { if(P1_1==0) //P1.1为低电平时 { L_cnt++; //计数器加1 } TR0=0; TH0=(65536- T0_TIME)/256;//定时时间由TIME设定 TL0=(65536- T0_TIME)%256; TR0=1; }

贵池区13045482166: 51单片机设计两位计数器C语言 -
益弯润肠: 51单片机的计算器(加减乘除开根带小数)proteus仿真和c资料,某宝上搜搜.

贵池区13045482166: 求个 51单片机 计数器 程序 -
益弯润肠: #include "reg52.h" #define u8 unsigned char #define u16 unsigned intsbit sw1=P3^4; sbit sw2=P3^5; sbit sw3=P3^6;sbit e0=P2^0; sbit e1=P2^1; sbit e2=P2^2; sbit e3=P2^3;u8 ds[4]={0,0,0,0}; u16 num=0;u8 code table[]={0X3F,0X06,0X5B...

贵池区13045482166: 51单片机定时/计数器作为计数器如何用C语言编程控制 来记录外部脉冲个数 -
益弯润肠: 你可以利用内部计数器计数,计数满就产生一个输出,通过改变计数值来实现对外来频率方波的分频

贵池区13045482166: 51单片机使用T0和T1外部脉冲计数,C语言如何编程? -
益弯润肠: 使用T0和T1外部脉冲计数,控制两个电机,到1700个脉冲电机停止, --统计脉冲个数,用外部中断更好. --T0和T1,留着定时用.用四个按键控制,按键1控制电机正转,按键2控制电机反转,按键3控制电机1正转,按键4控制电机2正转,怎么用C语言编程?--编程前,要先设计出来电路.

贵池区13045482166: 51单片机的计数器程序 -
益弯润肠: 你得在P3.5引脚外部加计数脉冲信号呀,T1才能计数的.就用你的程序,仿真的结果如下图,并用数码管显示了TL1=1的状态了.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网