第一個實驗:控制流水燈
P1_0,P1_1,P0_4都連接在發光二極管的負極,所以,當這三個引腳為低電平,也就是0的時候,相應的發光二極管才會亮。
其實這里可以稍微的關注一下寄存器的地址,然后,編程的時候可以嘗試操作一下!
控制發光二極管的步驟
graph TD id1[設置相應的引腳為通用口也就是設置PnSEL寄存器] id2[設置相應的引腳為輸出也就是設置PnDIR寄存器] id4[設置相應引腳的值也就是設置P1_0 P1_1 P0_4的值] id1-->id2 id2-->id4
初始化
//置零用&=,置一用|=
P1SEL&=~0x03; //設置P1_1和P1_0為通用接口 1111 1100
P0SEL&=~0x10; //設置P0_4為通用接口 1110 1111
P1DIR|=0x03; //設置P1_0與P1_1為輸出 0000 0011
P0DIR|=0x10; //設置P0_4為輸出 0001 0000
//設置123燈全為滅
P1_0=1;
P1_1=1;
P0_4=1;
延時函數
void Delay(uint n)
{
uint i;
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
}
全部代碼
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char //定義控制燈的端口
#define LED1 P1_0 //定義LED1 為P10 口控制
#define LED2 P1_1 //定義LED2 為P11 口控制
#define LED3 P0_4 //定義LED3 為P04 口控制
//延時 *****************************/
void Delay(uint n)
{
uint i;
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
for(i = 0;i<n;i++);
}
//初始化IO 口程序 *****************************/
void InitIO(void)
{
//置零用&=,置一用|=
P1SEL&=~0x03; //設置P1_1和P1_0為通用接口 1111 1100
P0SEL&=~0x10; //設置P0_4為通用接口 1110 1111
P1DIR|=0x03; //設置P1_0與P1_1為輸出 0000 0011
P0DIR|=0x10; //設置P0_4為輸出 0001 0000
//設置123燈全為滅
P1_0=1;
P1_1=1;
P0_4=1;
}
//主函數 ***************************/
void main(void)
{
InitIO();
while(1)
{
LED1=!LED1;
Delay(10000);
LED2=!LED2;
Delay(10000);
LED3=!LED3;
Delay(10000);
}
}
心得
通過這個實驗,應該記住初始化的流程,以及那幾個寄存器的用途