① 單片機中從P1.1引腳輸出1000hz方波 晶振頻率為12MHZ 定時時間為多少 怎麼計算
1000Hz 的周期T=1ms,定時為 半周期 0.5ms=500us,12MHz晶振,機械周期為 1us,定時器初值=65536-(500us/1us)=65036=0xFE0C;
若是想問定時時間,就為500us,若是想問定時器初值,就為 0xFE0C;
MOV R0,#03
MOV TMOD,#01H
SETB TR0
LOOP: MOV TH0,#FC
MOV TL0,#18
LOOP1:JNB TF0,LOOP1
CLR TF0
CPL P1.0
DJNZ R0,LOOP
MOV R0,#03
CPL P1.1
SJMP LOOP
(1)單片機晶振12mhz擴展閱讀:
在電子技術中,脈沖信號是一個按一定電壓幅度,一定時間間隔連續發出的脈沖信號。脈沖信號之間的時間間隔稱為周期;而將在單位時間(如1秒)內所產生的脈沖個數稱為頻率。頻率是描述周期性循環信號(包括脈沖信號)在單位時間內所出現的脈沖數量多少的計量名稱;
頻率的標准計量單位是Hz(赫茲)。電腦中的系統時鍾就是一個典型的頻率相當精確和穩定的脈沖信號發生器。
② 設MCS-51單片機的晶振頻率為12MHZ,試編寫10ms的延時程序(要求誤差不超過0.003ms)。
C語言程序:
#include
void main (void)
{
TMOD = 0x10;
TH1 = (-50000>>8);
TL1 = -50000;
TCON = 0x40;
IE = 0x88;
while(1);
}
void T1_int (void) interrupt 3
{
TH1 = (-50000>>8);
TL1 = -50000;
}
匯編程序如下:
ORG 0000H
AJMP MAIN
ORG 001BH
AJMP T1INT
ORG 0100H
MAIN:
MOV TMOD, #10H
MOV TH1, #HIGH(-50000)
MOV TL1, #LOW(-50000)
MOV TCON, #40H
MOV IE, #88H
AJMP $
T1INT:
PUSH ACC
MOV TH1, #HIGH(-50000)
MOV TL1, #LOW(-50000)
POP ACC
RETI
Keil C51程序設計中幾種精確延時方法
延時通常有兩種方法:一種是硬體延時,要用到定時器/計數器,這種方法可以提高CPU的工作效率,也能做到精確延時;另一種是軟體延時,這種方法主要採用循環體進行。
使用定時器/計數器實現精確延時
單片機系統一般常選用11.059 2 MHz、12 MHz或6 MHz晶振。第一種更容易產生各種標準的波特率,後兩種的一個機器周期分別為1 μs和2 μs,便於精確延時。
本程序中假設使用頻率為12 MHz的晶振。最長的延時時間可達216=65 536 μs。若定時器工作在方式2,則可實現極短時間的精確延時;如使用其他定時方式,則要考慮重裝定時初值的時間(重裝定時器初值佔用2個機器周期)。
在實際應用中,定時常採用中斷方式,如進行適當的循環可實現幾秒甚至更長時間的延時。使用定時器/計數器延時從程序的執行效率和穩定性兩方面考慮都是最佳的方案。但應該注意,C51編寫的中斷服務程序編譯後會自動加上PUSH ACC、PUSH PSW、POP PSW和POP ACC語句。
執行時佔用了4個機器周期;如程序中還有計數值加1語句,則又會佔用1個機器周期。這些語句所消耗的時間在計算定時初值時要考慮進去,從初值中減去以達到最小誤差的目的。
③ STC89C52單片機為什麼選用12M的晶振
個人以為,選用12M晶振主要有兩個理由,一是運行速度快,二是51單片機內部是12分頻,採用12M晶振可以得到1μS的的時鍾周期,這樣定時計算會比較方便。
④ 設單片機晶振頻率為12MHz,求振盪周期、狀態周期、機器周期各為多少
振盪周期:1/12 us。
狀態周期:1/6 us。
機器周期:1 us。
⑤ 單片機中晶振頻率為12MHZ的機器周期怎麼算
1、機器周期=晶振周期*12.
2、所以單片機中晶振頻率為12MHZ的機器周期=12*1/12M=1微秒.
⑥ c51單片機晶振為12Mhz怎麼算delay(10000)
很簡單,51單片機使用12mhz的晶振,那麼機器周期就是1us執行一條延時指令。10000條延時指令估計延時10ms左右,你可以使用模擬軟體試一試時間。