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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 12502|回復: 0
收起左側

CC2530的GPIO輸出控制教程-Led閃爍、流水燈程序分析

[復制鏈接]
ID:244570 發表于 2017-11-1 22:47 | 顯示全部樓層 |閱讀模式
1.實驗目的
2.GPIO輸出控制實驗-Led閃爍、流水燈

1) 通過實驗掌握 CC2530 芯片 GPIO 的配置方法
2) 掌握 Led 驅動電路及開關 Led 的原理
3) 操作 IO 口控制 3 盞 LED 燈的全亮和全滅、閃爍、流水燈
2.實驗設備
             硬件:PC 機              一臺 EB2530(底板、核心板、仿真器、USB線)   一套
             軟件:2000/XP/win7 系統,IAR 8.10 集成開發環境
3.實驗相關電路圖

由于發光二級管單向導電特性,即只有在正向電壓(二極管的正極接正,負極接負)下才 能導通發光。P1.0 引腳接發光二極管(D1)的負極,所以 P1.0 引腳輸出低電平 D1 亮,P1.0 引腳輸出亮電平 D1 熄滅,P1.1 和 P1.4 原理相同。

4.實驗相關寄存器 操作P1.0我們需要掌握相關寄存器的作用和配置方法。如下表所示(更詳細的介紹請參考 “EB2530\相關資料與軟件\cc2530-datasheet.pdf,英文不好的可參考CC2530中文數據手 冊完全版.pdf,翻譯有250頁并非官方中文,有個別地方有錯,請以英文為主哦”):


寄存器
作用
描述
P1 (0x90)
端口 1
端口 1。通用 I / O 端口。可以從 SFR 位尋址。


P1SEL(0xF4)


端口 1 功能選擇
P1.7 到 P0.0 功能選擇
0: 通用 I / O
1: 外設功能


P1DIR(0xFE)


端口 1 方向
P1.7 到 P1.0 的 I/O 方向
0: 輸入
1: 輸出

P1INP(0xF6)

端口 1 輸入模式
P1.7 到 P1.2 的 I/O 輸入模式。由于 P1.0 和 P1.1 沒有
上拉/下拉功能, P1INP 暫時不需要配置

0: 上拉/下拉(見 P2INP (0xF7)–端口 2 輸入模式)

1: 三態 按照表格寄存器的內容,對P1.0、P1.1、P1.4進行配置,當IO口輸出低電平時Led被點亮。


所以配置如下:

P1SEL &=~0x13; //配置P1.0、P1.1、P1.4為通用IO口 P1DIR |= 0x13; //配置P1.0、P1.1、P1.4為輸出
由于CC2530寄存器初始化時默認值為(詳細說明請參考CC2530數據手冊(中文).pdf): P1SEL = 0x00;P1DIR = 0x00; P1INP = 0x00;
所以 IO 口配置可簡化為:P1DIR |= 0x13; //配置 P1.0、P1.1、P1.4 為輸出
5.源碼分析

6.實驗步驟 連接硬件如下(后面的實驗將省略硬件連接與編譯了,別重復講了,只講不同的實驗):


如果編譯有錯誤,請參考最后一頁圖片說明。沒有錯誤請繼續
下載調試程序,再點運行,即可看到“3 盞 LED 燈的全亮



和全滅、閃爍、流水燈”,由于 P1.4 與仿真器共用,必須拔掉仿真器的插頭才能看到 LED3

的變化。單擊調試按鍵后程序已經下載到芯片中并保存,斷電也不會掉失的,此時可以停 止調試并斷開仿真器的排線,通過底板 USB 供電再看看效果吧。


cc2530源程序如下:
  1. /****************************************************************************
  2. * 文 件 名: main.c
  3. * 作    者: Andy
  4. * 修    訂: 2017-11-2
  5. * 版    本: 1.0
  6. * 描    述: 操作IO口控制3盞LED燈的全亮和全滅、閃爍、流水燈
  7. ****************************************************************************/
  8. #include <ioCC2530.h>

  9. typedef unsigned char uchar;
  10. typedef unsigned int  uint;

  11. #define LED1 P1_0       //定義P1.0口為LED1控制端
  12. #define LED2 P1_1       //定義P1.1口為LED2控制端
  13. #define LED3 P1_4       //定義P1.4口為LED3控制端


  14. /****************************************************************************
  15. * 名    稱: DelayMS()
  16. * 功    能: 以毫秒為單位延時,系統時鐘不配置時默認為16M(用示波器測量相當精確)
  17. * 入口參數: msec 延時參數,值越大,延時越久
  18. * 出口參數: 無
  19. ****************************************************************************/
  20. void DelayMS(uint msec)
  21. {
  22.     uint i,j;
  23.    
  24.     for (i=0; i<msec; i++)
  25.         for (j=0; j<535; j++);
  26. }

  27. /****************************************************************************
  28. * 名    稱: LedOnOrOff()
  29. * 功    能: 點亮或熄滅所有LED燈   
  30. * 入口參數: mode為0時LED燈亮  mode為1時LED燈滅
  31. * 出口參數: 無
  32. ****************************************************************************/
  33. void LedOnOrOff(uchar mode)
  34. {
  35.     LED1 = mode;
  36.     LED2 = mode;
  37.     LED3 = mode; //由于P1.4與仿真器共用,必須拔掉仿真器的插頭才能看到LED3的變化
  38. }

  39. /****************************************************************************
  40. * 名    稱: InitLed()
  41. * 功    能: 設置LED燈相應的IO口
  42. * 入口參數: 無
  43. * 出口參數: 無
  44. ****************************************************************************/
  45. void InitLed(void)
  46. {
  47.     P1DIR |= 0x13;      //P1.0、P1.1、P1.4定義為輸出
  48.     LedOnOrOff(1);      //使所有LED燈默認為熄滅狀態
  49. }

  50. /****************************************************************************
  51. * 程序入口函數
  52. ****************************************************************************/
  53. void main(void)
  54. {
  55.     uchar i;
  56.    
  57.     InitLed();               //設置LED燈相關IO口
  58.    
  59.     while(1)                 //死循環
  60.     {  
  61.         LED1 = !LED1;         //流水燈,初始化時LED為熄滅執行后則點亮
  62.         DelayMS(200);         
  63.         LED2 = !LED2;         
  64.         DelayMS(200);            
  65.         LED3 = !LED3;        
  66.         DelayMS(200);     
  67.         
  68.         for (i=0; i<2; i++)  //所有燈閃爍2次
  69.         {
  70.            LedOnOrOff(1);    //關閉所有LED燈
  71.            DelayMS(200);
  72.            LedOnOrOff(0);    //打開所有LED燈
  73.            DelayMS(200);
  74.         }
  75.         
  76.         LedOnOrOff(1);       //使所有LED燈熄滅狀態
  77.         DelayMS(500);

  78. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

0.png

所有資料51hei提供下載:
2.Led閃爍_流水燈.rar (330.03 KB, 下載次數: 11)


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品久久久国产一区二区三 | 国产精品成人久久久久a级 久久蜜桃av一区二区天堂 | 精品国产欧美一区二区三区成人 | 亚洲男人天堂av | 91精品国产一区二区三区 | 国产一区| 中文精品一区二区 | 久久精品亚洲欧美日韩久久 | 亚洲精品日日夜夜 | 精品久久精品 | 国外成人在线视频网站 | 成人午夜电影在线观看 | 91久久精品国产 | 国产影音先锋 | 麻豆精品久久 | 婷婷综合激情 | 色网站在线免费观看 | 成人午夜激情 | 日本欧美国产在线 | 欧美在线不卡 | 日韩成人免费视频 | 亚洲一区二区三区视频 | 欧美精品欧美精品系列 | 欧美日韩中| 久久久久久国产精品 | 成av在线| 亚洲xxxxx| 欧美一级做性受免费大片免费 | 91在线精品一区二区 | 久久青草av| 精品一区二区三区四区视频 | 国产精品亚洲精品日韩已方 | 亚洲国产精品视频 | 亚洲精品一区在线观看 | 亚洲精品欧美一区二区三区 | 久久aⅴ乱码一区二区三区 91综合网 | 欧美一区二区三区在线观看视频 | 免费国产一区 | 三级黄色片在线 | 日韩视频在线一区 | 亚洲一区二区免费视频 |