导航:首页 > 操作系统 > 单片机的时钟

单片机的时钟

发布时间:2022-01-15 16:24:19

1. 单片机的时钟问题

参考一下这个仿真实例,或许会对你有所帮助,试试。

2. 用单片机制作一个简易的时钟。。

#include<reg52.h>
#include"segnumca.h"
#define uchar unsigned char
sbit _speak=P1^0; //蜂鸣器P1^0
uchar hello_[]={0x89,0x86,0xc7,0xc7,0xc0,0xf7}; //HELLO_
uchar con[]={0x01,0x02,0x04,0x08,0x10,0x20}; //位控制
uchar time0=100;
uchar i=0;
uchar s,m,h;
void delay(); //0.3s
void intr_(); //int0\1初始化
/*********************************
主函数
*********************************/
void main()
{
s=m=h=0;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
TR0=1;
ET0=1;
EA=1;
intr_();
while(time0>10)
{
P2=con[i];
P0=hello_[i];
i++;
if(i>=6)i=0;
delay();
}
i=0;
while(1)
{
P2=con[i];
switch(i)
{
case 0:P0=seg[h/10];break;
case 1:P0=seg[h%10]+0x80;break;
case 2:P0=seg[m/10];break;
case 3:P0=seg[m%10]+0x80;break;
case 4:P0=seg[s/10];break;
case 5:P0=seg[s%10];break;
}
i++;
if(i>=6)i=0;
delay();
}
}
/****************************
T0
****************************/
void isr_time0() interrupt 1
{
TH0=0x3c;
TL0=0xb0;
time0--;
if(!time0)
{
time0=20;
s++;
if(s>=60)
{
s=0;
m++;
if(m>=60)
{
m=0;
h++;
if(h>=24)
{
h=0;
}
}
}
}
}
/*************************
外中断初始化
*************************/
void intr_()
{
IT0=1;IT1=1;EX0=1;EX1=1;
}
/**************************
for延时
**************************/
void delay() //大约延时0.3秒
{
unsigned char delay0,delay1;
for(delay0=0;delay0<5;delay0++)
for(delay1=0;delay1<255;delay1++);
}
/*********************************************
INT0
*********************************************/
void intr_0() interrupt 0
{
m++;
if(m>=60)m=0;
}
/*********************************************
INT1
*********************************************/
void intr_1() interrupt 2
{
h++;
if(h>=24)h=0;
}

3. 单片机时钟电路是干什么的

单片机运行需要时钟支持——就像计算机的CPU一样,如果没有时钟电路来产生时钟驱动单片机,那单片机就不能执行程序。
单片机可以看成是在时钟驱动下的时序逻辑电路。
以MCS一5l单片机为例随明:MCS一51单片机为l2个时钟周期执行’条指令。也就是说单片机运行‘条指令,必须要用r2个时钟周期。没有这个时钟,单片机就跑不起来了,也没有办法定时和进行和时间有关的操作。
时钟电路是微型计算机的心脏,它控制着计算机的二:作节奏。CPU就是通过复杂的时序电路完成不同的指令功能的。MCS一51的时钟信号可以由两种方式,生:‘种是内部方式,利用芯片内部的振荡电路,产生时钟信号:另一种为外部方式,时钟信号由外部引入。
如果没有时钟电路来产生时钟驱动单片机,单片机是无法工作的。

4. 单片机的时钟是什么,有什么用时钟信号有什么用

时钟相当于心跳,没有心跳你觉得怎么样?

我特意从网上找到一个MCU设计的硬件描述语言设计代码,地址:https://github.com/dangnhat/Simple_MCU/tree/master/NH%20cpu%20(VerilogProject)

摘抄几句代码来说一下:

always @ (posedge clock) //时钟上升沿触发

begin

if (nRst == 0) state <= S_Idle;

else

state <= next_state; //状态机改变,至下一个状态

end

always @ (state or opcode or r1 or r2 or rd or T or SROut or im)

//通过state状态改变来进行指令运行(其他信号改变也可以触发)

begin

....................

end

所以看出时钟用来驱动MCU读取指令运行的,如同心跳一样,相同的是都是间隔一定时间发生改变(上升、下降或压缩动作)都是周期性的动作,不同的是,MCU时钟是来读取运行指令的,人的心跳是来输送养分的。

补充回答是因为老有一些无知的人秀下限

5. 单片机内部时钟方式和外部时钟方式什么意思

一、内部时钟方式:
利用单片机内部的振荡器,然后在引脚XTAL1(18脚)和XTAL2(19脚)两端接晶振,就构成了稳定的自激振荡器,其发出的脉冲直接送入内部时钟电路,外接晶振时,晶振两端的电容一般选择为30PF左右;这两个电容对频率有微调的作用,晶振的频率范围可在1.2MHz-12MHz之间选择。为了减少寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机芯片靠近。

二、外部时钟方式:
此方式是利用外部振荡脉冲接入XTAL1或XTAL2。HMOS和CHMOS单片机外时钟信号接入方式不同,HMOS型单片机(例如8051)外时钟信号由XTAL2端脚注入后直接送至内部时钟电路,输入端XTAL1应接地。由于XTAL2端的逻辑电平不是TTL的,故建议外接一个上接电阻。对于CHMOS型的单片机(例如80C51),因内部时钟发生器的信号取自反相器的输入端,故采用外部时钟源时,接线方式为外时钟信号接到XTAL1而XTAL2悬空。如下图

外接时钟信号通过一个二分频的触发器而成为内部时钟信号,要求高、低电平的持续时间都大于20ns,一般为频率低于12MHz的方波。片内时钟发生器就是上述的二分频触发器,它向芯片提供了一个2节拍的时钟信号。
前面已提到,计算机工作时,是在统一的时钟脉冲控制下一拍一拍地进行的。由于指令的字节数不同,取这些指令所需要的时间也就不同,即使是字节数相同的指令,由于执行操作有较大的差别,不同的指令执行时间也不一定相同,即所需的拍节数不同。为了便于对CPU时序进行分析,一般按指令的执行过程规定了几中周期
单片机开发板学习有一套 单片机开发板最好,吴鉴鹰单片机开发板做得不错,比较适合学习使用

6. 请问单片机的单时钟是什么意思什么是单时钟谢谢各位!

一般指令执行都有固定的周期数。
每个周期数:传统的单片机都是12个时钟周期,如51单片机。后来有的单片机也同时支持每周期6时钟。这样指令执行速度会变快一倍。后来由于芯片架构的升级,可以支持每个指令周期执行时间是1个时钟周期。这样指令运行速度更大大的提高,以适应更高的应用需求,这就是单时钟。
时钟周期就是外部晶振的震荡周期。如5MHZ的外部时钟周期就是200ns。如果一条指令是2个指令周期,每周期是6时钟周期的话,就是200*6*2=2400ns.。单时钟就是400nS,可见单时钟比6时钟速度快了6倍

7. 单片机里的时钟数啊什么概念 具体点!

计数器是按机器周期算的

一个机器周期=12时钟周期
不管时钟多少,都按一个机器周期=12时钟周期计算 //**** 关键 ****//
12MHZ时钟换过来就是1M机器周期(1M/S)
1ms就是1000机器周期;
6MHZ时钟换过来就是0.5M机器周期(0.5M/S)
1ms就是500机器周期

8位计数器最高范围是65536,
如果我们要记时1s,可以以10ms为单位,循环记时100次

现在就是初始化,10ms为例
TL0=-10000; //对T0计数初始化赋值,用12M的JT,10ms也就是机器周期计数10000
TH0=-10000>>8;
这就是初始化,一次溢出10ms
(若用6M的JT,10ms也就是机器周期计数5000)
当然这只是其中一部分,具体还有比如TR0(1)的设置
溢出中断允许等!

上面两句等价于
TL0=55536;//(65536-10000)
TH0=55536>>8;
相当于从55536开始数,
数10000次(10ms)后溢出,为一个记数周期
100次后就是1s

上述过程是在中断服务程序中的

8. 单片机中时钟是指什么

单片机是依照时钟节拍来工作的,单片机主要是靠执行先前已经编译好的程序来工作的,程序要一条条地被执行。这样时钟就给执行一条条的程序做一个标准,即时钟的多少分频----指令周期。
时钟的来源主要有两种:一是来源于单片机的外部,由时钟输入引脚xtal0输入,xtal1悬挂即可。另外一种就是来源于单片机的内部时钟源,但需要外部接晶体振荡器(接在xtal0和xtal1端)和电容,这两个引脚的时钟源是可以输出到外部的,具体的使用应该还需要先接上分频器再使用,和一般的时钟源差不多。

9. 怎样用单片机做时钟

在电脑里面翻翻,找到一个上学时候做的电子钟程序。你将就看看吧。可以帮你找找思路。。。//*********************************////************电子时钟**********////*********************************//#include <reg51.h>
#include <intrins.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
sbit P10=P1^0;
sbit P31=P3^1;
sbit P32=P3^2;
sbit P33=P3^3;
sbit P34=P3^4;
sbit P35=P3^5;uchar bdata SYSflag;
sbit HMexchangflag = SYSflag^0;uchar led[11]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xff}; //0123456789 off/*定义并初始化变量*/
uchar second=0;
uchar minite=0;
uchar hour=12;
uchar sec20;
/*函数声明*/
void delay(uchar k ); //延时子程序
void time( ); //时间处理子程序
void xianshi( ); //显示子程序
void tiaozheng(); //时间调整子程序
void dingshi(); //定时子程序 /*****************************/
/*延时子程序*/
/****************************/
void delay (uchar k)
{
uchar j;
while((k--)!=0)
{
for(j=0;j<125;j++)
{;}
}
}

/**************************/
/*时间处理子程序*/
/**************************/
void time( void)
{
if(second==60) //秒钟设为60进制
{ second=0;
minite++;
if( minite==60) //分钟设为60进制
{ minite=0;
hour++;
if(hour==24) //时钟设为24进制
{hour=0; }
}
}

}
/*****************************/
/* 显示子程序*/
/*****************************/
void xianshi(void)
{
P2=0x01;
P1=led[hour/10]; //显示小时的十位
delay(4);
P2=0x02;
P1=led[hour%10]; //显示小时的个位
delay(4);
P2=0x04;
P1=led[minite/10]; //显示分的十位
delay(4);
P2=0x08;
P1=led[minite%10]; //显示分的个位
delay(4);
P2=0x10;
P1=led[second/10];
delay(4);
P2=0x20;
P1=led[second%10];
delay(4);
}
/**************************/
/**时间调整子程序*/
/*************************/
void tiaozheng()
{
if (P10==0)
{
delay(100);
if (P10==0)
{
if(HMexchangflag)
{
hour++;
if(hour==24)
{hour=0;}
}
else
{
minite++;
if(minite==59)
{minite=0;}
}
}
} }
/**************************/
/*主函数*/
/**************************/
void main(void)
{ P1=0xff; //初始化p1口,全设为1
TMOD=0x01; //time0为定时器,方式1
TH0=0x3c; //预置计数初值
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
while (1)
{

time( ); //时间处理
xianshi( ); //显示时间
tiaozheng(); //调整时间
}
}
/********************************
外部中断0服务子函数
*********************************/
void Exoint() interrupt 0
{
HMexchangflag= ~HMexchangflag;
}//定时Timer0中断服务子程序-------------------
void timer0(void) interrupt 1 using 0 //定时器0方式1,100ms中断一次
{
TH0=0x3c;
TL0=0xb0;
sec20++;
if(sec20==10)
{
second++;
sec20=0;
}
}

阅读全文

与单片机的时钟相关的资料

热点内容
女孩子如何嫁给程序员 浏览:657
安卓的动画响应为什么卡 浏览:835
怎么把axure放到服务器上 浏览:847
元柱体的钢材理论重量的便捷算法 浏览:467
地平线4如何加密 浏览:277
淘宝游戏解压神器 浏览:706
androidurl视频 浏览:842
app什么播放器好 浏览:13
网络机顶盒服务器地址 浏览:568
程序员常用软件下载网站 浏览:441
美颜照app哪个好用 浏览:287
农业银行app转款记录怎么清理 浏览:903
javastack类 浏览:735
安卓11本机内核编译环境 浏览:5
phpstomp安装 浏览:312
安卓手机如何不用密码下软件 浏览:559
安卓如何换机到新iphone 浏览:378
云喇叭服务器连接不上 浏览:791
云手机助手连接服务器失败 浏览:695
电脑怎么截屏放在文件夹中 浏览:264