P1_0,P1_1,P0_4都鏈接在發光二極管的負極,因此,當這三個引腳爲低電平,也就是0的時候,相應的發光二極管纔會亮。編程
其實這裏能夠稍微的關注一下寄存器的地址,而後,編程的時候能夠嘗試操做一下!函數
控制發光二極管的步驟ui
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); } }
經過這個實驗,應該記住初始化的流程,以及那幾個寄存器的用途spa