CPU時序的有關知識
振蕩周期:為單片機提供定時信號的振蕩源的周期(晶振周期或外加振蕩周期)
狀態周期:2個振蕩周期為1個狀態周期,用S表示。振蕩周期又稱S周期或時鐘周期。
機器周期:1個機器周期含6個狀態周期,12個振蕩周期。
指令周期:完成1條指令所佔用的全部時間,它以機器周期為單位。
例如:外接晶振為12MHz時,51單片機相關周期的具體值為:
振蕩周期=1/12us;
狀態周期=1/6us;
機器周期=1us;
指令周期=1~4us;
初始化程序應完成如下工作:
對TMOD賦值,以確定T0和T1的工作方式。
計算初值,並將其寫入TH0、TL0或TH1、TL1。
中斷方式時,則對EA賦值,開放定時器中斷。
使TR0或TR1置位,啟動定時/計數器定時或計數
解釋
#include "reg52.h" //此文件中定義了單片機的一些特殊功能寄存器
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
sbit led=P2^0; //定義P20口是led
void Timer0Init()
{
TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
ET0=1;//打開定時器0中斷允許
EA=1;//打開總中斷
TR0=1;//打開定時器
}
void main()
{
Timer0Init(); //定時器0初始化
while(1);
}
void Timer0() interrupt 1
{
static u16 i;
TH0=0XFC; //給定時器賦初值,定時1ms
TL0=0X18;
i++;
if(i==1000)
{
i=0;
led=~led;
}
}
關鍵字:51單片機 計時器 計數器 編輯:什麼魚 引用地址:http://news.eeworld.com.cn/mcu/ic494675.html推薦閱讀
#include <reg52.h> //調用單片機頭文件#define uchar unsigned char //無符號字符型 宏定義 變量範圍0~255#define uint unsigned int //無符號整型 宏定義 變量範圍0~65535sbit clk = P1^3; 
發表於 2020-12-03
閒暇之餘做了一個簡單的流水燈,設計思路先將LED燈從0-7逐個顯示,然後再從7-0逐個顯示。如果產生外部中斷(即按鈕按下),則8個LED燈全亮,之後又恢復流水燈狀態。#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit K=P3^2;//啟動按鈕,外部中斷uchar led;void delay(uint x) {
發表於 2020-12-03
基於單片機的LED點陣設計基本要求:利用單片機AT89C51設計LED點陣,顯示器能顯示不同的字符、圖形,能夠用獨立鍵控制不同字符的切換效果。創新:顯示效果可以是閃爍;靜止;平移等。任務區分:A——每隔1s閃爍1次B——循環平移,速度自定.單片機源程序如下:#include <reg52.h>sbit ADDR0 = P1^0;sbit ADDR1 = P1^1;sbit ADDR2 = P1^2;sbit ADDR3 = P1^3;sbit KEY = P3^5;unsigned int cnt,m,stage,sec=1000;unsigned char code image
發表於 2020-12-03
為(+10~-10)V。VREF端與D/A內部T形電阻網絡相連。(6)、Vcc :晶片供電電壓,範圍為(+5~ 15)V。(7)、AGND :模擬量地,即模擬電路接地端。(8)、DGND :數字量地。下面是單片機驅動程序:#include <reg51.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit CS = P1^0;sbit CLK = P1^1;sbit DI = P1^2;sbit DO = P1^2;uchar code Tab[]={0x3F,0x06
發表於 2020-12-01
源程序:#include<reg51.h> //定義頭文件#define uint unsigned int //定義字符uint#define uchar unsigned char  
發表於 2020-12-01
顯示結果:圖片及字體取模單片機源程序如下:#include<reg51.h>#include<intrins.h>#include<stdlib.h>#define uchar unsigned char#define uint unsigned int//定義埠sbit A0=P2^0; //定義埠是傳輸命令還是數據,sbit RW=P2^1;//定義埠是讀取還是寫入,sbit LCDEN=P2^2;//晶片使能啟動sbit RST=P2^3;//復位鍵uchar code dis1[]={/*-- 文字: 我 --*//*-- 
發表於 2020-12-01