请选择 进入手机版 | 继续访问电脑版
搜索
查看: 128|回复: 4

[原创] 【板卡活动】Curiosity PIC16F18875 之IO使用点灯

[复制链接]
发表于 2017-10-11 22:40:57 | 显示全部楼层 |阅读模式
本帖最后由 原来的你 于 2017-10-11 22:48 编辑

上一节介绍了PIC16F18875的配置位,这样们就可以正式开始PIC16F18875的io操作,对于PIC CCS来说,其IO使用很很简单,几个函数就可以输入输出,其函数如下:
  1. ////////////////////////////////////////////////////////////////// I/O
  2. // Discrete I/O Functions: SET_TRIS_x(), OUTPUT_x(), INPUT_x(),
  3. //                         PORT_x_PULLUPS(), INPUT(),
  4. //                         OUTPUT_LOW(), OUTPUT_HIGH(),
  5. //                         OUTPUT_FLOAT(), OUTPUT_BIT(),
  6. // Discrete I/O Prototypes:
  7. _bif void set_tris_a(int8 value);  
  8. _bif void set_tris_b(int8 value);  
  9. _bif void set_tris_c(int8 value);  
  10. _bif void set_tris_d(int8 value);  
  11. _bif void set_tris_e(int8 value);  
  12. _bif void set_input_level_a(int8 value);  
  13. _bif void set_input_level_b(int8 value);  
  14. _bif void set_input_level_c(int8 value);  
  15. _bif void set_input_level_d(int8 value);  
  16. _bif void set_input_level_e(int8 value);  
  17. _bif void set_open_drain_a(int8 value);  
  18. _bif void set_open_drain_b(int8 value);  
  19. _bif void set_open_drain_c(int8 value);  
  20. _bif void set_open_drain_d(int8 value);  
  21. _bif void set_open_drain_e(int8 value);  
  22. _bif int8 get_tris_a(void);  
  23. _bif int8 get_tris_b(void);  
  24. _bif int8 get_tris_c(void);  
  25. _bif int8 get_tris_d(void);  
  26. _bif int8 get_tris_e(void);  
  27. _bif void output_a(int8 value);  
  28. _bif void output_b(int8 value);  
  29. _bif void output_c(int8 value);  
  30. _bif void output_d(int8 value);  
  31. _bif void output_e(int8 value);  
  32. _bif int8 input_a(void);  
  33. _bif int8 input_b(void);  
  34. _bif int8 input_c(void);  
  35. _bif int8 input_d(void);  
  36. _bif int8 input_e(void);  
  37. _bif int8 input_change_a(void);  
  38. _bif int8 input_change_b(void);  
  39. _bif int8 input_change_c(void);  
  40. _bif int8 input_change_d(void);  
  41. _bif int8 input_change_e(void);  
  42. _bif void port_a_pullups(int8 upmask);   
  43. _bif void port_b_pullups(int8 upmask);   
  44. _bif void port_c_pullups(int8 upmask);   
  45. _bif void port_d_pullups(int8 upmask);   
  46. _bif void port_e_pullups(int8 upmask);   
  47. _bif int1 input(int16 pin);
  48. _bif int1 input_state(int16 pin);
  49. _bif void output_low(int16 pin);
  50. _bif void output_high(int16 pin);
  51. _bif void output_toggle(int16 pin);
  52. _bif void output_bit(int16 pin, int1 level);
  53. _bif void output_float(int16 pin);
  54. _bif void output_drive(int16 pin);
复制代码
引脚功能可选择的配置如下:
  1. ////////////////////////////////////////////////////////////////// PIN_SELECT
  2. // #pin_select function=pin
  3. // Valid Pins:
  4. //    PIN_A0,PIN_A1,PIN_A2,PIN_A3,PIN_A4,PIN_A5,PIN_A6,PIN_A7,PIN_B0,PIN_B1,
  5. //    PIN_B2,PIN_B3,PIN_B4,PIN_B5,PIN_B6,PIN_B7,PIN_C0,PIN_C1,PIN_C2,PIN_C3,
  6. //    PIN_C4,PIN_C5,PIN_C6,PIN_C7,PIN_D0,PIN_D1,PIN_D2,PIN_D3,PIN_D4,PIN_D5,
  7. //    PIN_D6,PIN_D7,PIN_E0,PIN_E1,PIN_E2,PIN_E3
  8. // Input Functions:
  9. //    INT0,T0CK,T1CK,T1G,T3CK,T3G,T5CK,T5G,T2CK,T4CK,T6CK,CCP1,CCP2,CCP3,CCP4,
  10. //    CCP5,SMT1WIN,SMT1SIG,SMT2WIN,SMT2SIG,CWG1IN,CWG2IN,CWG3IN,MDCARL,MDCARH,
  11. //    MDSRC,CLCIN0,CLCIN1,CLCIN2,CLCIN3,ADCACT,SCK1IN,SCL1IN,SDI1,SDA1IN,SS1IN,
  12. //    SCK2IN,SCL2IN,SDI2,SDA2IN,SS2IN,U1RX,U1CKIN,T0CKI,T1CKI,T3CKI,T5CKI,T2CKI,
  13. //    T4CKI,T6CKI,CCP1IN,CCP2IN,CCP3IN,CCP4IN,CCP5IN,RX1
  14. // Output Functions:
  15. //    NULL,CLC1OUT,CLC2OUT,CLC3OUT,CLC4OUT,CWG1OUTA,CWG1OUTB,CWG1OUTC,CWG1OUTD,
  16. //    CCP1OUT,CCP2OUT,CCP3OUT,CCP4OUT,CCP5OUT,PWM6OUT,PWM7OUT,U1TX,U1DT,C1OUT,
  17. //    C2OUT,SCK1OUT,SCL1OUT,SDA1OUT,SDO1,SCK2OUT,SCL2OUT,SDA2OUT,SDO2,T0OUT,
  18. //    NCO1OUT,CLKROUT,DSMOUT,CWG2OUTA,CWG2OUTB,CWG2OUTC,CWG2OUTD,CWG3OUTA,
  19. //    CWG3OUTB,CWG3OUTC,CWG3OUTD,ADGRDA,ADGRDB,PWM6,PWM7,TX1,DT1,SCK1,SCL1,SDA1,
  20. //    SCK2,SCL2,SDA2,NCO1
  21. //
复制代码
根据手册不同引脚配置不同功能。
对于PIC16F18875的可选择引脚如下:
  1. // Constants used to identify pins in the above are:

  2. #define PIN_A0  96
  3. #define PIN_A1  97
  4. #define PIN_A2  98
  5. #define PIN_A3  99
  6. #define PIN_A4  100
  7. #define PIN_A5  101
  8. #define PIN_A6  102
  9. #define PIN_A7  103

  10. #define PIN_B0  104
  11. #define PIN_B1  105
  12. #define PIN_B2  106
  13. #define PIN_B3  107
  14. #define PIN_B4  108
  15. #define PIN_B5  109
  16. #define PIN_B6  110
  17. #define PIN_B7  111

  18. #define PIN_C0  112
  19. #define PIN_C1  113
  20. #define PIN_C2  114
  21. #define PIN_C3  115
  22. #define PIN_C4  116
  23. #define PIN_C5  117
  24. #define PIN_C6  118
  25. #define PIN_C7  119

  26. #define PIN_D0  120
  27. #define PIN_D1  121
  28. #define PIN_D2  122
  29. #define PIN_D3  123
  30. #define PIN_D4  124
  31. #define PIN_D5  125
  32. #define PIN_D6  126
  33. #define PIN_D7  127

  34. #define PIN_E0  128
  35. #define PIN_E1  129
  36. #define PIN_E2  130
  37. #define PIN_E3  131
复制代码
本次我们选择点亮4个LED,代码很简单,如下几句话:
  1. #include <16F18875.h>
  2. #fuses RSTOSC_HFINTRC
  3. #fuses RSTOSC_HFINTRC_PLL
  4. #fuses NOWDT
  5. #fuses LVP
  6. #fuses NOPROTECT
  7. #device ADC=10
  8. #use delay(internal=32000000)

  9. #define LED0 PIN_A4
  10. #define LED1 PIN_A5
  11. #define LED2 PIN_A6
  12. #define LED3 PIN_A7
  13. #define DELAY 1000

  14. void main()
  15. {

  16.         while(1)
  17.         {
  18.         output_low(LED0);
  19.         output_low(LED1);
  20.         output_low(LED2);
  21.         output_low(LED3);
  22.                 delay_ms(DELAY);
  23.                 output_high(LED0);
  24.         output_high(LED1);
  25.         output_high(LED2);
  26.         output_high(LED3);
  27.                 delay_ms(DELAY);
  28.         }

  29. }
复制代码

IMG_0117.JPG

回复

使用道具 举报

发表于 2017-10-12 09:26:40 | 显示全部楼层
骚操作           
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-12 09:49:28 | 显示全部楼层

是不是很神奇,这是PIC CCS内建的功能,很简单,一句话操作IO, 还有别的方式操作IO,看函数学习就好了
回复 支持 反对

使用道具 举报

发表于 2017-10-12 13:13:14 | 显示全部楼层
牛逼了
回复

使用道具 举报

发表于 2017-10-19 19:10:19 | 显示全部楼层
有点意思啊 哈哈哈哈
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

站长推荐上一条 /4 下一条

facebook google plus twitter linkedin youku weibo rss
©2017 Microchip Corporation

小黑屋|手机版|Archiver|Microchip技术社区  

GMT+8, 2017-12-13 07:49 , Processed in 0.101780 second(s), 9 queries , Memcache On.

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