单片机论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 679|回复: 1
打印 上一主题 下一主题
收起左侧

PIC单片机的一个简单的SPI小程序

[复制链接]
跳转到指定楼层
楼主
这里介绍一个简单的PIC单片机SPI测试小程序,希望大家能够喜欢。
  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. }
复制代码
详细内容,请参考:http://www.51hei.com/bbs/dpj-138111-1.html




评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 顶 踩
回复

使用道具 举报

沙发
1273539886 发表于 2018-12-12 17:06 | 只看该作者
你好!pic的spi怎么检测发送完成呀,能贴一下你的SPI1_Write代码吗?谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|单片机论坛 |51黑电子论坛单片机. 联系QQ:125739409;技术交流QQ群582644647

Powered by 单片机教程网

快速回复 返回顶部 返回列表