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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

一個經典的單片機正弦波程序,程序很短但處處是精華

查看數: 5048 | 評論數: 3 | 收藏 10
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2021-12-6 15:44

正文摘要:

回復

ID:1110477 發表于 2025-3-13 06:15
100000L,長整型?
ID:58835 發表于 2025-3-12 12:18
不錯 很棒的程序
ID:624769 發表于 2021-12-8 18:51
第一:sfr16 RCAP4    = 0xE4;                 // Timer4 capture/reload
         sfr16 TMR4     = 0xF4;                 // Timer4
         sfr16 DAC0     = 0xd2;                 // DAC0 data
         sfr16 DAC1     = 0xd5;                 // DAC1 data

程序有這個定義,我想知道是干什么用的?好像沒看到有什么作用。

=> 這是寄存器定義,等同于 SFR  P0 = 0x80;  只不過這是16位的。

第二:#define SAMPLE_RATE_DAC 100000L        // DAC sampling rate in Hz
這是DAC的采樣率,請問L 是什么單位。
         // <PHASE_ADD> is the change in phase between DAC samples; It is used in
// the set_DACs routine.

=>  L 是 long型的意思,在Keil3 以上時可以不需要加L,但是有些編譯器不加 L 的話,默認最大只支持到 65535 , 總之加了絕對不會錯。

unsigned int PHASE_ADD = FREQUENCY * PHASE_PRECISION / SAMPLE_RATE_DAC;
這時兩個dac的相位變化,我想知道為什么是這個公式,怎么來的。

=> 這個指示程序員自己擬定的一個計算公式,大致的意思是: 頻率 * 脈沖精度 / DAC的采樣率
至于,具體怎么來的,要問程序員了。


第三:TIMER4_Init(SYSCLK/SAMPLE_RATE_DAC);// Initialize Timer4 to overflow
定時器4的溢出為什么是  SYSCLK/SAMPLE_RATE_DAC  ?
=> 和上面類似,也就是 系統時鐘 / DAC的采樣率

第四: DAC0 = SIN_temp ^ 0x8000;
          DAC1 = COS_temp ^ 0x8000;           // Write to DAC1
為什么要或上8000?

=> 這里不是或,是 與或  也就是反轉最高位,結合 SIN COS來看,就是把正的變負的負的變正的吧。


好像,你就這些問題吧?

評分

參與人數 1黑幣 +5 收起 理由
waerdeng + 5 回帖助人的獎勵!

查看全部評分

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲777 | 日韩精品视频在线播放 | www.国产.com| 日本免费一级 | 香蕉在线观看视频 | 91亚洲视频| 国产成人精品久久久 | 黄色片www| 亚洲精品久久久久久久久久久 | 欧美激情第二页 | 亚洲黄色精品 | 国产精品久久久久久久久久久久久 | 一级黄色录像视频 | 亚洲伊人影院 | 九九视频在线 | 色在线播放 | 久久精品一区二区 | 第一福利视频 | 欧美激情网 | 久视频在线 | 日韩免费在线观看视频 | 日韩天天操 | 亚洲视频一区二区三区 | 老女人丨91丨九色 | 精品久久网站 | 窝窝午夜精品一区二区 | 亚洲成人精品 | www.黄色av | 亚洲毛片在线 | 亚洲精品久久 | 午夜在线影院 | 日韩在线免费 | 日韩精品免费观看 | 国产黄色三级 | www.日本在线观看 | 午夜天堂在线 | 香蕉视频一直看一直爽 | 综合色婷婷一区二区亚洲欧美国产 | 精品少妇一区二区三区免费观 | 日韩欧美中文 | 国产亚洲区 |