void Traffic_lignt() {
switch(Operation_Type) {case 1: IO0SET=RED_A; IO0SET=YELLOW_A; IO0CLR=GREEN_A; IO0CLR=RED_B; IO0SET=YELLOW_B; IO0SET=GREEN_B; DelayMS(2000); Operation_Type = 2; break; case 2: DelayMS(200); IO0SET=YELLOW_A; DelayMS(200); IO0CLR=YELLOW_A; IO0SET=GREEN_A; if(++Flash_Count !=5) return; Flash_Count=0; Operation_Type = 3; break; case 3: IO0CLR=RED_A; IO0SET=YELLOW_A; IO0SET=GREEN_A; IO0SET=RED_B; IO0SET=YELLOW_B; IO0CLR=GREEN_B; DelayMS(2000); Operation_Type = 4; break; case 4: DelayMS(200); IO0SET=YELLOW_B; DelayMS(200); IO0CLR=YELLOW_B; IO0SET=GREEN_B; if(++Flash_Count !=5) return; Flash_Count=0; Operation_Type = 1; break; } }
int main(void) { PINSEL0=0x00000000;
PINSEL1=0X00000000; IO0DIR=0x00003f00; while(1)
{Traffic_lignt(); }}
十一、流水灯 实验电路图:
#include \
void DelayNS (uint32 dly) { uint32 i; for ( ; dly>0; dly--) for (i=0; i<50000; i++); }
int main (void) { PINSEL0 = 0x00000000; IO0DIR = 0x000000ff; while (1) { IO0PIN = 0xAA; DelayNS(15); IO0PIN = 0x55 ; DelayNS(15); IO0PIN = 0x00 ; DelayNS(15); }}
十二、模拟交通灯 实验电路图:
源程序:
#include
void Traffic_lignt() {
switch(Operation_Type) {case 1: IO0SET=RED_A; IO0SET=YELLOW_A; IO0CLR=GREEN_A; IO0CLR=RED_B; IO0SET=YELLOW_B; IO0SET=GREEN_B; DelayMS(2000); Operation_Type = 2; break; case 2: DelayMS(200); IO0SET=YELLOW_A; DelayMS(200); IO0CLR=YELLOW_A; IO0SET=GREEN_A; if(++Flash_Count !=5) return;
Flash_Count=0;
Operation_Type = 3; break; case 3: IO0CLR=RED_A; IO0SET=YELLOW_A; IO0SET=GREEN_A; IO0SET=RED_B; IO0SET=YELLOW_B; IO0CLR=GREEN_B; DelayMS(2000); Operation_Type = 4; break; case 4: DelayMS(200); IO0SET=YELLOW_B; DelayMS(200); IO0CLR=YELLOW_B; IO0SET=GREEN_B; if(++Flash_Count !=5) return; Flash_Count=0; Operation_Type = 1; break; }
}
int main(void) { PINSEL0=0x00000000; PINSEL1=0X00000000; IO0DIR=0x00003f00; while(1) {Traffic_lignt(); }}
十三、FIQ中断服务 实验电路图:
#include \
#define LED1 1 << 18 #define EINT0 14 int main (void)
{ PINSEL1 = 0x00000001; IO0DIR = LED1; EXTMODE = 0x00; FIQEnable(); VICIntSelect = 1 << EINT0; EXTINT = 0x01; VICIntEnable = 1 << EINT0; while (1); }
void FIQ_Exception(void) { uint32 i; i = IO0SET; if ((i & LED1) == 0) IO0SET = LED1; else IO0CLR = LED1; while ((EXTINT & 0x01) != 0) { EXTINT = 0x01; } }
十四、按键控制LED 实验内容:
每一按键对应一个LED灯,当按键被按下,对应的LED灯亮;
实验电路图:
#include \IO0SET=LED4; else IO0CLR=LED4; break; #include \ case KEY5 :if((IO0PIN&LED5)!=LED5) void DelayNS(uint32 dly) IO0SET=LED5; else IO0CLR=LED5; break; { uint32 i; case KEY6 :if((IO0PIN&LED6)!=LED6) for(; dly>0; dly--) IO0SET=LED6; else IO0CLR=LED6; break; for(i=0; i<50000; i++); case KEY7 :if((IO0PIN&LED7)!=LED7) } IO0SET=LED7; else IO0CLR=LED7; break; void keyscan(void) case KEY8 :if((IO0PIN&LED8)!=LED8) { uint32 i,j,k; IO0SET=LED8; else IO0CLR=LED8; break; k=IO0PIN; }} if((k&keycon)!=keycon) while((k&keycon)!=keycon) k=IO0PIN; { }} for(j=0; j<50000; j++); int main(void) k=IO0PIN; { if((k&keycon)!=keycon) TargetResetInit(); { i=(k&keycon)|(~keycon); PINSEL0 = 0x00000000; i=~i; PINSEL1 = 0x00000000; switch(i) IO0DIR = 0x000000ff; { case KEY1 :if((IO0PIN&LED1)!=LED1) IO0CLR = 0xffffffff; IO0SET=LED1;else IO0CLR=LED1;break; while(1) case KEY2 :if((IO0PIN&LED2)!=LED2) {
IO0SET=LED2;、else IO0CLR=LED2; break; keyscan();
} case KEY3 :if((IO0PIN&LED3)!=LED3)
} IO0SET=LED3;else IO0CLR=LED3; break;
case KEY4 :if((IO0PIN&LED4)!=LED4)