1樓:阿挺時代
是什麼微控制器假設是51,
sbit led=p1^0;
void main()
void t0_time() interrupt 1if(b==3)}
用c51微控制器和內部定時器來產生矩形波,要求頻率為100hz,佔空比為2:1,如何理解?
2樓:匿名使用者
矩形波就是邏輯電平0和1的轉換。用術語說你要做的就是一個簡單的pwm訊號發生器。頻率很好理解,就是週期的倒數。
其週期為1/100s,是10ms。那麼10ms完成一個波形的變換。佔空比2:
1,那麼高電平與低電平的時間佔週期的比例為2:1,就是高電平為2/3*10 ms,低電平時間為1/3*10ms,這樣就完成了一個完整的波形。如此往復就可以達到要求。
利用定時器完成高低電平的時間定時,用io口進行高低的電平的轉換就可以了!
3樓:匿名使用者
100hz的矩形波,週期就是10ms,佔空比2:1,就是高的部分佔10ms的2/3,低的部分佔10ms的1/3。理解了嗎?
用微控制器和內部定時器來產生矩形波
4樓:學而_無止境
由於你沒說用什麼微控制器,所以我用51的寫的(12t),鍾頻率為12mhz是不可能完成頻率為100khz,佔空比為2:1(高電平時間較長),因為你的機器週期是1us
是中斷裡面最少都要花上7us,按你的提意高電平為6.6666....us,低電平為3.3333.....us,所以無法完成,而且用晶振算出來還有小數,更不能過到了。
下面的程式請用48m的晶振,高電平為約6.us,低電平為約3.us,頻率為100khz,佔空比為約為2:
1,用51(12t)微控制器是很難達到你要值的。除非的要的頻率再低。cpu頻率再加高。
現在應該明白了吧!
#include
sbit pwm=p2^0;
void t0_t() interrupt 1else
}void main()
5樓:匿名使用者
使用atmega16-16ai微控制器,晶振為12mhz,讓微控制器工作於fpwm模式,icr1=120,這樣pwm的頻率就是100khz了,然後設定ocr1a=80,這樣佔空比就是66.6%,即高電平時間是低電平時間的2倍。
所以1l和2l說的都很正確,用51微控制器來實現時很困難的,需要換個微控制器。
6樓:
100khz的週期是10us,12mhz晶振51的指令週期是1us,所以很緊張,你的微控制器不能在幹別的了,只能執行如下的程式(假設從p1.0輸出脈衝):
lab1: clr p1.0 ;1us
nop ;1us
nop ;1us
setb p1.0 ;1us
nop ;1us
nop ;1us
nop ;1us
nop ;1us
jmp lab1 ;2us
因為只能精確到1us,所以佔空比沒那麼準,大約7:3
7樓:依米
如果用pic微控制器就好多了,自帶pwm和分頻器,四行程式就夠了!
8樓:
週期為10us,分3份,51那有那麼精確的?
編寫從微控制器的p1.0 產生頻率為50khz等寬矩形波的執行程式.要求使用定時器/計數
9樓:q是
50000hz,也就是1/50000=20us,所以,在定時器中定義初始值
th0=(65535-200)/256;
tl0=(65535-200)%256;
然後開ea=1;
tr0=1;
就可以了哦。
10樓:匿名使用者
用中斷設定好時間到時候翻轉就可以了
微控制器內部定時產生頻率為100khz等寬矩形波,晶振頻率為12mhz,如何程式設計?
利用微控制器的定時器t0令p1.2引腳輸出2ms的矩形波,要求佔空比為1:2(高電平持續時間短)微控制器為12mhz。
11樓:皇冠電子設計
可以借鑑輸出pwm波的一般方法,要用到兩個定時器,第一個用來確定整個波的週期,例如你這裡的2ms,第二個用來確定高電平的時間,例如你這裡的1/3ms, 過程大概是這樣的:啟動第一個定時器,把電平拉高,緊接著啟動第二個定時器,當第二個計數滿了之後,把電平拉低,關閉第二個定時器,這時就出來了一個週期的波,你重複這個過程就出來連續波了, 關於定時器初值和中斷向量那些你再去找找資料吧,一言兩語說不清楚
已知8051微控制器的fosc=12mhz,請利用定時器0方式二讓p1.2輸出矩形波。其矩形波高電平寬50us,低電平寬250 5
12樓:
*** 0000h
ljmp main
*** 000bh;以下是定時器0中斷處復理cjne r7,#00h,higho;如果制r7不為bai0,跳轉到輸出
du低電zhi
平處setb p1.2;如果r7為0,輸出高電平ljmp testo ;跳轉到test0,對r7進行dao處理higho:;輸出低電平
clr p1.2;輸出低電平
testo:
inc r7 ;r7自加一
cjne r7,#05h,exit ;如果r7不等於5,直接退出mov r7,#00h ;如果r7等於5,則清零r7exit:
reti ;退出中斷
*** 0030h
main:
mov r7,#00h;r7作為脈衝高低電平計數,初始清零mov tmod,#02h;定時器0工作於方式2mov th0,#0ceh;定時器0初值,50us中斷一次mov tl0,#0ceh
setb et0;開啟定時器0中斷
setb ea;開啟總中斷
setb tr0;啟動定時器0
ljmp $;死迴圈end
51微控制器晶振頻率12mhz,程式設計實現p1.0輸出頻率為2khz,佔空比為50%的方波,使用定時器
13樓:匿名使用者
#include
#define uchar unsigned charuchar num;
sbit p10=p1^0;
void t0isr() interrupt 3}main()
設80c51微控制器的晶振頻率為12mhz,試程式設計輸出頻率為100mhz,佔空比2:10的矩形波
14樓:匿名使用者
8051微控制器12m晶振要輸出100m頻率的脈衝是不可能實現的,晶振才12m,你拿什麼來得到100m的矩形波?!
15樓:古鎮河
老實人這麼多的嗎?。。。。我覺得樓主明顯就是打錯了,應該是輸出100hz的波。。。。。。。
16樓:匿名使用者
微控制器本身是無論如何都是做不到了。。。
如果一定要做,就試試微控制器+頻率發生晶片。
可以參考這個資料!
17樓:匿名使用者
這個也太難了,可能沒有人能做到,12mhz 與 100mhz 什麼概念,
51 微控制器 做不到。
18樓:cindere鞡
你好:但就用12mhz的微控制器時不可能輸出100mhz頻率的波形的,因為,微控制器最快的速度也才是1us,而且加上指令,速度就好幾微妙去了,就算用定時器做,拋開誤差不說,最大也只能輸出1mhz的波。
希望我的回答能幫助到你。
19樓:源嬋湛聰
;如下即可:
***0000h
movtmod,
#01h
setb
tr0lp1:
setb
p1.0
movr2,
#6loop:
movth0,
#(65536
-16666)
/256
movtl0,
#(65536
-16666)
mod256
jnbtf0,
$clr
tf0clr
p1.0
djnz
r2,loop
sjmp
lp1end
微控制器中斷實驗,微控制器定時器中斷實驗 程式(組合語言)不要c語言的
include 包含52微控制器暫存器定義的標頭檔案 函式功能 主函式 void main void 函式功能 外中斷t0的中斷服務程式 void int0 void interrupt 0 外中斷0的中斷編號為0 這是一個外中斷led實驗,你看看吧 中斷實驗有幾種,譬如外部中斷0,1,定時器中斷 ...
51微控制器定時器初值公式中的256是什麼
256換成十六進位制數就是ffh,也就是一個位元組數全部計滿時的資料!手打不易,如有幫助請採納,謝謝!用方式1時,16位的初值要分解成高8位 低8位,分別存放到 th0 tl0。對256求模,也就是除以 256 得到的整數商,這就是高八位。對256求餘,也就是除以 256,得到的餘數,這就是低八位。...
請問這段微控制器組合語言程式(關於定時器延時)是什麼意思
delay mov r3,14h 迴圈20次mov tmod,10h 定時器1工作於模式1 16位定時器 mov th1,3ch 賦初值,50毫秒溢位一次mov tl1,0b0h setb tr1 啟動定時器1 lp1 jbc tf1,lp2 溢位位為1,則清0後轉移到lp2 sjmp lp1 否則...