久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5544|回復: 12
收起左側

如何以公式的形式給單片機定時器賦初值

  [復制鏈接]
ID:86913 發表于 2019-2-18 19:46 | 顯示全部樓層 |閱讀模式
如:定時0.02秒,用公式的形式給定時器TH0、TL0賦值?這個C語言的語句怎么寫?(注意,是以公式的形式,不是TH0=0xB8、TL0=0x00這種寫法),謝謝!
回復

使用道具 舉報

ID:401564 發表于 2019-2-18 21:15 | 顯示全部樓層
TH0=0xB8、TL0=0x00這種寫法必須存在!!你想改變定時器的溢出時間,只能由這兩個地址來決定,不管你是想用什么公式,這代碼是一定要有的,除非是別人已經寫好了函數,但這會讓原本不是很復雜的定時器設定變得很復雜
你多用幾次就可以了
如果是一定要用公式的話,就用延時函數吧
回復

使用道具 舉報

ID:213173 發表于 2019-2-18 21:21 | 顯示全部樓層
在實際應用中用公式不如用工具。
回復

使用道具 舉報

ID:477932 發表于 2019-2-19 00:10 | 顯示全部樓層
給你一個
void Music_Play(uint8 *MusicTab)
{
        uint8 *pMusic;
        uint8 temp,i;

        pMusic=MusicTab;  //將歌曲首地址給指針變量
        while(*pMusic!=0)
        {
                if((*pMusic&0xf0)==0x00)
                        Fre=65536-1000000/FreTab_Low[*pMusic&0x0f];
                else if((*pMusic&0xf0)==0x10)
                        Fre=65536-1000000/FreTab_Mid[*pMusic&0x0f];
                else if((*pMusic&0xf0)==0x20)
                        Fre=65536-1000000/FreTab_Hight[*pMusic&0x0f];
                       
                TH0=Fre/256;                //計算頻率初值,賦高八位
                TL0=Fre%256;                //計算頻率初值,賦低八位
                TH1=0x3c;                    //定時器1賦初值,定時50ms
                TL1=0xb0;
               
                pMusic++;                    //獲得節拍值
                temp=*pMusic;
                TR0=1;                        //開啟定時器T0
                TR1=1;                        //開啟定時器T1
                for(i=0;i<temp;i++)
                {
                        while(TF1==0);        //判斷定時器1是否溢出
                        TH1=0x3c;
                        TL1=0xb0;
                        TF1=0;       
                }
                pMusic++;
        }
}

評分

參與人數 3黑幣 +38 收起 理由
zhengchong60 + 15
sheng7533967 + 15
春風十里吹 + 8

查看全部評分

回復

使用道具 舉報

ID:158375 發表于 2019-2-19 08:17 | 顯示全部樓層
這個想法不錯,只是實際運用中需要你考慮的問題太多,程序復雜。這也許是它的不足。
回復

使用道具 舉報

ID:86913 發表于 2019-2-19 11:30 | 顯示全部樓層
謝謝上面各位朋友的賜教!
我曾看到過;
TH0=(65536-Y)/256
TL0=(65536-Y)%256
其中Y=65536-S*12/11059200
式中 S是定時值,單位:秒
不過,我看不明白
回復

使用道具 舉報

ID:86913 發表于 2019-2-19 20:32 | 顯示全部樓層
Y_G_G 發表于 2019-2-18 21:15
TH0=0xB8、TL0=0x00這種寫法必須存在!!你想改變定時器的溢出時間,只能由這兩個地址來決定,不管你是想用 ...

謝謝賜教,
我曾看到過;
TH0=(65536-Y)/256
TL0=(65536-Y)%256
其中Y=65536-S*12/11059200
式中 S是定時值,單位:秒
不過,我看不明白
回復

使用道具 舉報

ID:86913 發表于 2019-2-19 20:33 | 顯示全部樓層
wulin 發表于 2019-2-18 21:21
在實際應用中用公式不如用工具。

謝謝賜教,
我曾看到過;
TH0=(65536-Y)/256
TL0=(65536-Y)%256
其中Y=65536-S*12/11059200
式中 S是定時值,單位:秒
不過,我看不明白
回復

使用道具 舉報

ID:86913 發表于 2019-2-19 20:36 | 顯示全部樓層
static 發表于 2019-2-19 00:10
給你一個
void Music_Play(uint8 *MusicTab)
{

這里P0和P1為什么有兩種賦值形式
回復

使用道具 舉報

ID:86913 發表于 2019-2-19 20:38 | 顯示全部樓層
static 發表于 2019-2-19 00:10
給你一個
void Music_Play(uint8 *MusicTab)
{

謝謝提供資料1
這里,P0和P1為什么用兩種賦值方式?
回復

使用道具 舉報

ID:86913 發表于 2019-2-19 20:40 | 顯示全部樓層
wulin 發表于 2019-2-18 21:21
在實際應用中用公式不如用工具。

謝謝賜教,
我曾看到過;
TH0=(65536-Y)/256
TL0=(65536-Y)%256
其中Y=65536-S*12/11059200
式中 S是定時值,單位:秒
我覺得用公式來改變初值比較方便
回復

使用道具 舉報

ID:477934 發表于 2019-2-20 18:04 | 顯示全部樓層
tmxk0574 發表于 2019-2-19 20:40
謝謝賜教,
我曾看到過;
TH0=(65536-Y)/256

那里面就是公式啊!看個人的悟性了!

評分

參與人數 8黑幣 +112 收起 理由
static + 10
zhengchong60 + 15
sheng7533967 + 15
shuisheng60 + 16
還有誰? + 10
找人PK + 14
鉆牛尖滴劉尖尖 + 16
yoxi + 16

查看全部評分

回復

使用道具 舉報

ID:469417 發表于 2019-3-10 03:34 | 顯示全部樓層
你可以用N多種公式來做,最終將結賦值給定時器
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产99精品 | 中文字幕欧美一区 | 欧美成人精品一区 | 国产精品成人一区二区 | 992tv人人草 久久精品超碰 | 69性欧美高清影院 | 精品国产一区二区三区性色 | 久久噜噜噜精品国产亚洲综合 | 国产精品a久久久久 | 精品视频一区二区 | 欧美一区二区三区一在线观看 | 一区二区在线不卡 | 毛片网在线观看 | 中文在线a在线 | 国产真实乱对白精彩久久小说 | 激情欧美日韩一区二区 | 精品一区在线免费观看 | 一区二区视频在线 | 中文字幕在线一区二区三区 | ririsao久久精品一区 | 亚洲精品日韩综合观看成人91 | 精品国产一区久久 | 国产成人精品一区二 | 亚洲视频免费播放 | 国产精品99久久久久 | 国产一区免费视频 | 国产精品免费观看 | 福利片在线 | 在线免费观看毛片 | 91精品久久久久久综合五月天 | 亚洲精品乱码久久久久久久久久 | 亚洲精品福利在线 | 亚洲人成一区二区三区性色 | 国产一级视频在线观看 | 超级黄色一级片 | 91在线看片 | 国产精品国产三级国产播12软件 | 欧美一区二区在线免费观看 | 久久综合伊人 | 国产欧美一区二区三区免费 | 日韩激情在线 |