单片机定时计数的问题,下面这段程序是什么意思啊,是8052,最好能逐行解释,谢谢!

作者&投稿:上弯 (若有异议请与网页底部的电邮联系)
java程序解释,逐行解释,谢谢~

你是在随机生成双色球的红球啊。。。
//定义String类型的一维数组,01 - 33 即双色球的红球
String[] pool = {"01","02","03","04","05","06","07",
"08","09","10","11","12","13","14","15","16",
"17","18","19","20","21","22","23","24","25",
"26","27","28","29","30","31","32","33"};

//定义一个长度为32的boolean类型的数组,用于判断该随机数是否已经占用
boolean[] used = new boolean[pool.length];
//定义一个随机数生成类
Random random = new Random();
//定义用于最终存储6个红球的String数组
String[] balls = new String[6];
//定义下标
int i=0;

while(true){
//随机获取一个0-32的下标
int index = random.nextInt(pool.length);//[0,33)
//如果这个下标已经被占用了,跳出本次循环
if(used[index]){
continue;
}
//将该下标对应的那个红球的数赋值给上面定义的数组
balls[i++] = pool[index];
//将该红球设置为占用,即已经摇出来了
used[index]=true;
//如果是最后一个球,跳出整个循环
if(i==balls.length){
break;
}
}
//对结果进行排序
Arrays.sort(balls);
balls = Arrays.copyOf(balls, balls.length+1);
balls[balls.length-1]=pool[random.nextInt(16)];

#include<reg52.h> 头文件
#define uchar unsigned char 宏定义懂吧 以后unsigned char就用uchar表示了
uchar code table[]=
;编码定义和C中数组定义方法类似 这里主要是为了让数码管显示具体数字而编的
uchar seconds,minute,count1; 定义变量


/**********初始化函数***************/
void init()
{
P0=0xff; 这个有电路图才好说 不过好像是让端口都为高电平
P0=0x00; // 初始化关显示
seconds=0;
minute=0;
count1=0;
TMOD=0x11; //选择计数器T1模式1
TH1=(65536-46080)/256; 这是定时器的设置 计算初值 改变那个被减数可以改变每次的时间
TL1=(65536-46080)%256; //定时器1实现50MS定时 同上
EA=1; //开总中断
ET1=1; //开定时器1中断
TR1=1; //定时器1开始计数
}

/******定时器1中断函数*********/
void t1() interrupt 3 //定时器1中断级别为3
{
TH1=(65536-46080)/256;//数据重载 “/”这符号是求模
TL1=(65536-46080)%256; ”%“这符号是求余
count1++;
if(count1==20) 这个20乘以上面的那个50毫秒就是1秒钟
{
count1=0; 计20次重新归零
seconds++; 每计20次秒数加一
if(seconds>59)
{
seconds=0;
}minute++; 当秒数>59时秒数归零 分加1 我个人觉得这应该设置为>60 如果设置为59的话 seconds=59的时候就归零了 就是说59可能就不会显示了

}
}


/*******延时函数***************/
void delay(uchar xms)
{
char x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--); 这是根据程序仿真算的时间 每110次大概就是一毫秒 设置X等于几就是几毫秒
}


/************显示函数***********/
void display(uchar temp)
{
uchar qian,bai,shi,ge; 定义变量
temp=seconds; 把seconds的值传递给temp

qian=minute/10; 对10取模
bai=minute%10; 对10取余

shi=temp/10; 对10取模
ge=temp%10; 对10取余

P0=0xff; //消隐 这个没什么大用 去掉也可以
P2=0xdf;//第一个数码管选中 这个值得看你那电路图
P0=table[ge]; 对P0赋值 从table中调取
delay(1); 调用延迟函数 延迟一毫秒

P0=0xff;//消隐
P2=0xef;//第二个数码管选中 看电路图赋值
P0=table[shi]; 同上
delay(1);

P0=0xff;//消隐
P2=0xf7;//第三个数码管选中
P0=table[bai];
delay(1);

P0=0xff;//消隐
P2=0xfb;//第四个数码管选中
P0=table[qian];
delay(1);
}
/************主函数***********/
void main()
{
init(); 初始化函数
while(1) 大循环
{
display(seconds); 让数码管开始显示 计秒
}
}
这是一个计时器程序 没有小时 是计秒 然后还有分钟 我也是初学者 有什么问题我们可以再讨论 我的邮箱snowleopard331@163.com 有问题发邮件给我一起讨论

#include<reg52.h> 头文件
#define uchar unsigned char 宏定义懂吧 以后unsigned char就用uchar表示了
uchar code table[]=
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};编码定义和C中数组定义方法类似 这里主要是为了让数码管显示具体数字而编的
uchar seconds,minute,count1; 定义变量

/**********初始化函数***************/
void init()
{
P0=0xff; 这个有电路图才好说 不过好像是让端口都为高电平
P0=0x00; // 初始化关显示
seconds=0;
minute=0;
count1=0;
TMOD=0x11; //选择计数器T1模式1
TH1=(65536-46080)/256; 这是定时器的设置 计算初值 改变那个被减数可以改变每次的时间
TL1=(65536-46080)%256; //定时器1实现50MS定时 同上
EA=1; //开总中断
ET1=1; //开定时器1中断
TR1=1; //定时器1开始计数
}

/******定时器1中断函数*********/
void t1() interrupt 3 //定时器1中断级别为3
{
TH1=(65536-46080)/256;//数据重载 “/”这符号是求模
TL1=(65536-46080)%256; ”%“这符号是求余
count1++;
if(count1==20) 这个20乘以上面的那个50毫秒就是1秒钟
{
count1=0; 计20次重新归零
seconds++; 每计20次秒数加一
if(seconds>59)
{
seconds=0;
}minute++; 当秒数>59时秒数归零 分加1 我个人觉得这应该设置为>60 如果设置为59的话 seconds=59的时候就归零了 就是说59可能就不会显示了

}
}

/*******延时函数***************/
void delay(uchar xms)
{
char x,y;
for(x=xms;x>0;x--)
for(y=110;y>0;y--); 这是根据程序仿真算的时间 每110次大概就是一毫秒 设置X等于几就是几毫秒
}

/************显示函数***********/
void display(uchar temp)
{
uchar qian,bai,shi,ge; 定义变量
temp=seconds; 把seconds的值传递给temp

qian=minute/10; 对10取模
bai=minute%10; 对10取余

shi=temp/10; 对10取模
ge=temp%10; 对10取余

P0=0xff; //消隐 这个没什么大用 去掉也可以
P2=0xdf;//第一个数码管选中 这个值得看你那电路图
P0=table[ge]; 对P0赋值 从table中调取
delay(1); 调用延迟函数 延迟一毫秒

P0=0xff;//消隐
P2=0xef;//第二个数码管选中 看电路图赋值
P0=table[shi]; 同上
delay(1);

P0=0xff;//消隐
P2=0xf7;//第三个数码管选中
P0=table[bai];
delay(1);

P0=0xff;//消隐
P2=0xfb;//第四个数码管选中
P0=table[qian];
delay(1);
}
/************主函数***********/
void main()
{
init(); 初始化函数
while(1) 大循环
{
display(seconds); 让数码管开始显示 计秒
}
}
这是一个计时器程序 没有小时 是计秒 然后还有分钟 我也是初学者 有什么问题我们可以再讨论 我的邮箱snowleopard331@163.com 有问题发邮件给我一起讨论

这个程序的注释已经很详细了,定时器50MS中断一次,count1计数,中断20次之后秒值加一,秒大于59后,分加一,就是个分秒显示程序 。这个注释已经很详细了,都注释了反而是浪费时间,哪里不懂联系我吧

时钟


80C51定时 计数器在什么情况下是定时器?什么情况下是计数器?
【答案】:80C51定时\/计数器归根到底是一个计数器,基本功能是加1。对外部事件脉冲(T0必须从P3.4输入、T1必须从P3.5输入)计数,是计数器;对片内机周脉冲计数,是定时器。因为片内机周脉冲频率是固定的,是fosc的1\/12。若fosc=12MHz,1机周为1μs;若fosc=6MHz,1机周为2μs,机周脉冲时间...

定时\/计数器不知道定时时间,怎么计算计数初值啊,拜托了,提问里面没人理...
51系列单片的机器周期算法是(12\/晶振)us,你使用12MHz晶振,那么机器周期就是12\/12Hz=1us,那么定时器是16位 2^16=65536,65536-x,其中x代表你需要定时时长,若为50ms=50000us,就是65536-15536=50000,定时器计数50000次。每次1us,算出得50ms。不懂的地方可随时回复我。希望我的回答能帮助...

定时\/计数器不知道定时时间,怎么计算计数初值啊,拜托了,提问里面没人理...
51系列单片的机器周期算法是(12\/晶振)us,你使用12MHz晶振,那么机器周期就是12\/12Hz=1us,那么定时器是16位 2^16=65536,65536-x,其中x代表你需要定时时长,若为50ms=50000us,就是65536-15536=50000,定时器计数50000次。每次1us,算出得50ms。不懂的地方可随时回复我。希望我的回答能帮助...

单片中定时器中的(65536-50000)\/256 除以256是干什么啊
如果你选的单片机的晶振一定,比如12MHZ来说吧,机器周期是1us,就是说每1us产生一次计数,就拿50ms来说,这是你想要的计时,意思是,对机器周期进行50000计数就可以得到我想要的,可T0是一个可以对机器周期能进行65536次计数,也就是说我想要的50MS不能让T0溢出,怎么办,那么先给这个定时器里面放...

单片机片内定时器与计数器的主要区别是什么?
2)在定时方式时,计数脉冲输入信号由内部时钟提供;计数方式时计数脉冲来自于相应的外部输入引脚。3)定时器是对单片机的机器周期数进行计数;计数器对外部输入脉冲信号计数,当信号产生由0到1的跳变时计数器的值加一。模式控制寄存器的D1D0或是D5D4位用来选择定时\/计数器的四种工作模式,00表示模式0,...

单片机中断系统与定时器\/计数器
1、当定时\/计数器选定为定时器方式时,是对片内机器周期脉冲数进行计数,选定为计数器方式时,是对(外部事件)进行计数 。2、设定时器T0为方式1定时,定时器T1为方式1计数,则工作方式控制字TMOD=(51H)。3、设(TMOD)=0A5H,则定时器T0的状态是(方式1计数 ),定时器T1的状态是(方式2定时 )...

c51单片贩定时计数器t0有几种工作方式
方式0: 13位定时计数方式,最大计数值为2^13=8192,定时8192个机器周期;方式1: 16位定时计数方式,最大计数值为2^16=65536,定时65536个机器周期;方式2: 8位自动重装计数方式,最大计数值为2^8=256,定时256个机器周期;方式3: 特殊工作方式。将定时器0分成两个彼此独立8位计数器。

服装模板挂片机的计数功能
计数功能:自动计数(根据节拍自动计数)。是通过构建新的个案计数变量,来统计每个个案的指定变量列表中设置值的出现次数。计数功能是最基本的时序电路,它不仅可以用来统计输入脉冲的个数,还可作为数字系统中的分频、定时电路,用途相当广泛。

PLC的定时器和计数器分别具体有什么作用?
为了使用方便,在有些单片集成计数器上还附加了异步置零、预置数、保持等功能,并设置了相应的控制端。 定时器应用: 1、在实行峰谷电价差的地区,可使用大功率电器在低电价阶段自动运行。 2、用于控制需定时开与关的家用电器。如:饮水机、热水器、空调、电饭煲、广告照明等。 3、用于控制通电时间长短。如:电动自行...

微机系统中,8253的三个定时器分别做什么使用
PC\/XT微机系统使用一片8253,片内的三个定时\/计数器各自的用途是:定时\/计数器0:用于日历时钟计时;定时\/计数器1:用于DRAM内存定时刷新;定时\/计数器2:用于扬声器发声。

稷山县19142225246: 单片机用c语言编一个程序,要求用内部定时/计数器对30个脉冲进行计数,并同时对这三十个脉冲进行计时. -
芒窦宫宁: 看了一下你的要求,单片机里有个GATE位的设置如果你懂得用,编这个程序就不难了.下面是我个人按照你要求刚编的程序:/*********************** 功能:内部定时/计数器记录脉冲个数和这些脉冲通过后所用的时间.硬件:单片机用AT89c51,...

稷山县19142225246: 计数1秒的脉冲数.刚学单片机,新手求高手帮我完善以下的程序. -
芒窦宫宁: 程序很多问题,首先检查定时器赋值,重新算初值;其次,中断向量标号;然后,定时器工作方式为方式1,工作完后要重新把初值装入

稷山县19142225246: 单片机定时/计数器实验 -- 脉冲计数器 -
芒窦宫宁: 这是个简易频率计,程序如下: ;---------------------------------ORG 0000HJMP STARTORG 000BHJMP T0_INT ;--------------------------------- START:MOV TMOD, #51H ;/*01010001 T1计数,T0定时*/MOV TH0, #HIGH(65536 - 50000) ;50ms@12...

稷山县19142225246: 实现0到99通过单片机内部的定时计数器完成计数功能的汇编程序 -
芒窦宫宁: SECOND EQU 30H COUNT EQU 31H ORG 00H LJMP START ORG 0BH ;定时器0中断入口 LJMP INT_T0 START: MOV SECOND,#00H MOV COUNT,#00H MOV DPTR,#TABLE ;段码表首地址 MOV P0,#3FH ;数码管显示初始化 MOV P2,#...

稷山县19142225246: 求一段51单片机的程序.要求外部中断高电平触发时,定时器0开始计数. -
芒窦宫宁: #include<reg52.h> #define uint unsigned int #define uchar unsigned char sbit dula=P2^6; sbit wela=P2^7; sbit d1=P1^0; char num,tt; uchar code table[]={ 0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71}; void ...

稷山县19142225246: 用汇编语言写一个单片机定时器/计数器的程序 -
芒窦宫宁: 1.以查询方式工作,每计满100个脉冲,则取反P1.0口线状态.ORG 0000H MOV TMOD, #06H MOV TH0, #156 MOV TL0, #156 SETB TR0 LP: JNB TF0, LP CPL P1.0 SJMP LP END2.以中断方式工作,每计满200个脉冲,则取反P1.0口线状态. ORG 0000H SJMP START ORG 000BH CPL P1.0 RETI START: MOV TMOD, #06H MOV TH0, #56 MOV TL0, #56 SETB TR0 MOV IE, #82H SJMP $ END

稷山县19142225246: 单片机里定时/计数器的初始化程序如何编写? -
芒窦宫宁: TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;TR0=1;ET0=1;

稷山县19142225246: 单片机定时计数器程序运行过程 -
芒窦宫宁: 程序运行到这里就死循环了,while (1) { led2 = 0; } 后边的代码是无缘运行的.程序运行首先从地址0000H开始,跳转到主程序入口也就是main()那里开始,所以真正有意义的运行第一条是: zhi = 0x01; 依次往下执行,到TR0=1;开始定时...

稷山县19142225246: 10秒50秒100秒的计数定时器单片机编程 -
芒窦宫宁: ;;晶体振荡f=12Mhz TEN_BUF EQU 30H ;10秒 计数器 TWE_BUF EQU 31H ;20s FIF_BUF EQU 32H ;50s SENCOND EQU 40H ;s counter; TEN_LED REG P1.0 ;DISPLAY TWE_LED REG P1.1 FIF_LED REG P1.2; TEN_KEY REG P1.4 ;KEY ...

稷山县19142225246: 求一个关于单片机定时器和计数器的c语言程序!大神出现吧~~~ -
芒窦宫宁: //说明:p11产生方波.p0口显示.按键接数码管的阳极公共端. #include#define uchar unsigned char #define uint unsigned int unsigned char code LED7Code[] = {~0x3F,~0x06,~0x5B,~0x4F,~0x66, ~0x6D,~0x7D,~0x07,~0x7F,~0x6F};//数码管...

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