找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 5043|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

PIC單片機(jī)的一個(gè)簡(jiǎn)單的SPI小程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:406093 發(fā)表于 2018-10-23 08:44 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
這里介紹一個(gè)簡(jiǎn)單的PIC單片機(jī)SPI測(cè)試小程序,希望大家能夠喜歡。
  1. // DAC module connections
  2. sbit Chip_Select at RC0_bit;
  3. sbit Chip_Select_Direction at TRISC0_bit;
  4. // End DAC module connections

  5. unsigned int value;                     

  6. void InitMain() {
  7.   TRISA0_bit = 1;                        // Set RA0 pin as input
  8.   TRISA1_bit = 1;                        // Set RA1 pin as input
  9.   Chip_Select = 1;                       // Deselect DAC
  10.   Chip_Select_Direction = 0;             // Set CS# pin as Output
  11.   SPI1_Init();                           // Initialize SPI module
  12. }

  13. // DAC increments (0..4095) --> output voltage (0..Vref)
  14. void DAC_Output(unsigned int valueDAC) {
  15.   char temp;

  16.   Chip_Select = 0;                       // Select DAC chip
  17.   
  18.   // Send High Byte                                         
  19.   temp = (valueDAC >> 8) & 0x0F;         // Store valueDAC[11..8] to temp[3..0]
  20.   temp |= 0x30;                          // Define DAC setting, see MCP4921 datasheet
  21.   SPI1_Write(temp);                      // Send high byte via SPI
  22.   
  23.   // Send Low Byte
  24.   temp = valueDAC;                       // Store valueDAC[7..0] to temp[7..0]
  25.   SPI1_Write(temp);                      // Send low byte via SPI
  26.   
  27.   Chip_Select = 1;                       // Deselect DAC chip
  28. }

  29. void main() {
  30.   ANSEL = 0;
  31.   ANSELH = 0;
  32.   InitMain();                            // Perform main initialization

  33.   value = 2048;                          // When program starts, DAC gives
  34.                                          //   the output in the mid-range
  35.                                           
  36. while (1) {                             // Endless loop

  37.     if ((RA0_bit) && (value < 4095)) {   // If RA0 button is pressed
  38.       value++;                           //   increment value
  39.       }
  40.     else {
  41.       if ((RA1_bit) && (value > 0)) {    // If RA1 button is pressed
  42.         value--;                         //   decrement value
  43.         }
  44.       }
  45.     DAC_Output(value);                   // Send value to DAC chip
  46.     Delay_ms(1);                         // Slow down key repeat pace
  47.   }
  48. }
復(fù)制代碼
詳細(xì)內(nèi)容,請(qǐng)參考:http://www.torrancerestoration.com/bbs/dpj-138111-1.html




評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:247624 發(fā)表于 2018-12-12 17:06 | 只看該作者
你好!pic的spi怎么檢測(cè)發(fā)送完成呀,能貼一下你的SPI1_Write代碼嗎?謝謝
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表