|
論壇的各位前輩,請(qǐng)求指點(diǎn)
我本人喜歡單片機(jī),也是自學(xué)的,基礎(chǔ)不好!學(xué)習(xí)單片機(jī)已經(jīng)困在定時(shí)中斷這里很久了,看了很多書,也不理解,心里實(shí)在是矛盾,請(qǐng)求有耐心的前輩指點(diǎn)一二
請(qǐng)各位前輩指點(diǎn);
第一:這里對(duì)于中斷我想弄清楚以下:
1.裝載初始值:例如我晶振為11.0592
機(jī)器周期=12/11.0592=1.085us 我需要讓它50ms中斷一次 50000/1.09=45872
初始值就是 TH0=(65536-45872)/256=應(yīng)該是76 ,那么這個(gè)76,裝載到高八位是裝換成16進(jìn)制嗎?還是二進(jìn)制
TL0=(65536-45872)%256=應(yīng)該是8125 這個(gè)裝載到低八位中 又是什么樣子的!可能問的問題都不對(duì),大家別笑話,我看書上面講的比較籠統(tǒng),不明白其中的意思!
2.所謂中斷溢出,書上就是說 TH0 和TL0 都滿后,那么如何才是 低八位滿后向高八位進(jìn)1?不理解。也沒有老師教,自己之前也不是學(xué)這些課程的!
郭天祥老師里面的
void main()
{
TMOD=0X01;
TH0=(65536-45872)/256;//這個(gè)數(shù)得出來 76
TL0=(65536-45872)%256;//這個(gè)數(shù)得出來8125 就不不懂這個(gè)地方 所謂的高八位和低八位的概念
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(num==20)
{
num=0;
led=~led;
}
}
}
另外我自己寫了個(gè)小程序,就是按鍵 然后LED從第一個(gè)到最后一個(gè)一次點(diǎn)亮 按鍵1加 按鍵2減
里面也有個(gè)小問題,請(qǐng)前輩們看看
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
uchar code table[]={0xff,0xfe,0xfc,0xf8,0xf0,0xe0,0xc0,0x80,0x00};
uchar num;
uchar num0;
void delayms(uint);
sbit key_jia=P3^4;
sbit key_jian=P3^5;
void led() //LED子函數(shù)
{
P1=table[num];
}
void keyscan()
{
if(key_jia==0)
{
delayms(10);
if(key_jia==0)
{
num++;
if(num==9) //如果這個(gè)地方是if(num==8)的話,當(dāng)我按鍵到第8次的時(shí)候應(yīng)該是全部亮吧,但是按第八次的時(shí)候全部滅了,只亮了前面7顆LED燈這個(gè) //是為什么
num=0; //非得改成if(num==9)才行,按第八次的時(shí)候才會(huì)全部亮
while(!key_jian);//此處的while語句不要 加延時(shí)時(shí)間長(zhǎng)一點(diǎn)是不是也一樣,一定要加這個(gè)釋放按鍵的語句嗎,如果不加的話一直按鍵LED是從一顆到全 //部亮,而加了則需要一次一次按鍵
delayms(200);
}
}
if(key_jian==0)
{
delayms(10);
if(key_jian==0)
{
if(num==0)
num=9;
num--;
while(!key_jian);
}
}
}
void main() //主函數(shù)
{
while(1)
{
keyscan();
led();
}
}
void delayms(uint xms)//延時(shí)函數(shù)
{
uint j,l;
for(j=xms;j>0;j--)
for(l=110;l>0;l--);
}
最后一個(gè)問題,我想做一個(gè)用定時(shí)器產(chǎn)生一個(gè)1KHZ的可調(diào)PWM波形
用兩個(gè)按鍵實(shí)現(xiàn) 0-100% 和100-0%的調(diào)整
我想了很久,因?yàn)樯厦娴闹袛鄾]有學(xué)會(huì)不理解,所以糾結(jié)了很久
我說下我的思路,請(qǐng)前輩指點(diǎn)一下
利用定時(shí)器的中斷 100us 為1KHZ的PWM波
應(yīng)該來說當(dāng)是100US的時(shí)候 應(yīng)該是最大占空比了
但是如何去固定頻率,去調(diào)整它的通段時(shí)間呢?這里是不是要用到兩個(gè)定時(shí)器呀?
有那個(gè)前輩給個(gè)思路
謝謝大家!
|
|