1、匯編程序
GPADIR EQU 0xE0028008
GPASET EQU 0xE0028004
GPACLR EQU 0xE002800C
EXPORT xmain
AREA Init,CODE,READONLY
ENTRY
xmain
ldr r0,=GPADIR
orr r1,r1,#0x0ff
orr r1,#0x300
str r1,[r0] ;A=out
;===========init1602=================
mov r4,#0x38
BL w1602C
mov r4,#0x06
BL w1602C
mov r4,#0x0c
BL w1602C
mov r4,#0x01
BL w1602C
;============main=================
loop mov r4,#0x80
bl w1602C
mov r7,#0x30
loop1 mov r4,r7
bl w1602D
add r7,r7,#1
cmp r7,#0x3A
bne loop1
mov r4,#0xc0
bl w1602C
mov r7,#0x41
loop2 mov r4,r7
bl w1602D
add r7,r7,#1
cmp r7,#0x4f
bne loop2
B loop
;===================================
w1602C orr r1,r1,#0x0ff
orr r1,#0x300
ldr r0,=GPACLR
str r1,[r0]
mov r1,#0
ORR r1,r1,r4
ldr r0,=GPASET
str r1,[r0]
nop
nop
orr r1,r1,#0x200
str r1,[r0]
nop
nop
nop
nop
ldr r0,=GPACLR
mov r1,#0x200
str r1,[r0]
mov pc,lr
;======================================
w1602D orr r1,r1,#0x0ff
orr r1,#0x300
ldr r0,=GPACLR
str r1,[r0]
mov r1,#0x100
ORR r1,r1,r4
ldr r0,=GPASET
str r1,[r0]
nop
nop
orr r1,r1,#0x200
str r1,[r0]
nop
nop
nop
nop
ldr r0,=GPACLR
mov r1,#0x200
str r1,[r0]
mov pc,lr
;===================================
delay mov r5,#3
delay1 sub r5,r5,#1
cmp r5,#0
bne delay1
mov pc,lr
end
2、以下為C程序
//GPIO0=32Pin;(Pin0----Pin31)
#define GPIO0IN (*(volatile unsigned long *) 0xE0028000)//輸入寄存器
#define GPIO0SET (*(volatile unsigned long *) 0xE0028004)//輸出1,那位為1,管腳輸出1
#define GPIO0CLR (*(volatile unsigned long *) 0xE002800C)//輸出0,那位為1,管腳輸出0
#define GPIO0DIR (*(volatile unsigned long *) 0xE0028008)//方向控制,1為輸出,0輸入
//GPIO0=16Pin;(Pin16----Pin31)
#define GPIO1IN (*(volatile unsigned long *) 0xE0028010)//輸入寄存器
#define GPIO1SET (*(volatile unsigned long *) 0xE0028014)//輸出1,那位為1,管腳輸出1
#define GPIO1CLR (*(volatile unsigned long *) 0xE002801C)//輸出0,那位為1,管腳輸出0
#define GPIO1DIR (*(volatile unsigned long *) 0xE0028018)//方向控制,1為輸出,0輸入
void xmain()
{
unsigned short n,m;
GPIO1DIR =0xffff0000;
while(1)
{
for(n=16;n<32;n++)
{
GPIO1CLR=0xffff0000;
for(m=0;m<30000;m++)
GPIO1SET=1<<n;
}
}
}
//GPIO0=32Pin;(Pin0----Pin31)
#define GPIO0IN (*(volatile unsigned long *) 0xE0028000)//1ü½ÅÖμ
#define GPIO0SET (*(volatile unsigned long *) 0xE0028004)//êä3ö1¼Ä′æÆ÷
#define GPIO0CLR (*(volatile unsigned long *) 0xE002800C)//êä3ö0¼Ä′æÆ÷
#define GPIO0DIR (*(volatile unsigned long *) 0xE0028008)//fangx
//GPIO0=16Pin;(Pin16----Pin31)
#define GPIO1IN (*(volatile unsigned long *) 0xE0028010)//1ü½ÅÖμ
#define GPIO1SET (*(volatile unsigned long *) 0xE0028014)//êä3ö1¼Ä′æÆ÷
#define GPIO1CLR (*(volatile unsigned long *) 0xE002801C)//êä3ö0¼Ä′æÆ÷
#define GPIO1DIR (*(volatile unsigned long *) 0xE0028018)//fangx
void xmain()
{
unsigned short n,m,k;
GPIO1DIR =0xff030000;
GPIO1CLR |=0xff030000;
GPIO1SET |=0x38000000;
for(n=0;n<8;n++);
GPIO1SET |=0x00020000;
for(n=0;n<12;n++);
GPIO1CLR |=0x00020000;
GPIO1CLR |=0xff030000;
GPIO1SET |=0x06000000;
for(n=0;n<8;n++);
GPIO1SET |=0x00020000;
for(n=0;n<12;n++);
GPIO1CLR |=0x00020000;
GPIO1CLR |=0xff030000;
GPIO1SET |=0x0c000000;
for(n=0;n<8;n++);
GPIO1SET |=0x00020000;
for(n=0;n<12;n++);
GPIO1CLR |=0x00020000;
GPIO1CLR |=0xff030000;
GPIO1SET |=0x01000000;
for(n=0;n<8;n++);
GPIO1SET |=0x00020000;
for(n=0;n<12;n++);
GPIO1CLR |=0x00020000;
while(1)
{
GPIO1CLR |=0xff030000;
GPIO1SET |=0x80000000;
for(n=0;n<8;n++);
GPIO1SET |=0x00020000;
for(n=0;n<12;n++);
GPIO1CLR |=0x00020000;
for(m=0;m<10;m++)
{
GPIO1CLR |=0xff030000;
GPIO1SET |=(0x30010000 +(m<<24));
for(n=0;n<5;n++);
GPIO1SET |=(0x00030000 + (m<<24));
for(n=0;n<8;n++);
GPIO1CLR |=0x00020000;
k=30000;
while(k--);
}
GPIO1CLR |=0xff030000;
GPIO1SET |=0xc0000000;
for(n=0;n<8;n++);
GPIO1SET |=0xc0020000;
for(n=0;n<12;n++);
GPIO1CLR |=0x00020000;
for(m=0;m<16;m++)
{
GPIO1CLR |=0xff030000;
GPIO1SET |=(0x41010000 +(m<<24));
for(n=0;n<8;n++);
GPIO1SET |=(0x41030000 + (m<<24));
for(n=0;n<12;n++);
GPIO1CLR |=0x00020000;
k=30000;
while(k--);
}
k=60000;
while(k--);
GPIO1CLR |=0xff030000;
GPIO1SET |=0x01000000;
for(n=0;n<8;n++);
GPIO1SET |=0x01020000;
for(n=0;n<12;n++);
GPIO1CLR |=0x00020000;
}
}

//GPIO0=32Pin;(Pin0----Pin31)
#define GPIO0IN (*(volatile unsigned long *) 0xE0028000)//1ü½ÅÖμ
#define GPIO0SET (*(volatile unsigned long *) 0xE0028004)//êä3ö1¼Ä′æÆ÷
#define GPIO0CLR (*(volatile unsigned long *) 0xE002800C)//êä3ö0¼Ä′æÆ÷
#define GPIO0DIR (*(volatile unsigned long *) 0xE0028008)//fangx
unsigned char tt[13]="Shanxi Dianzi";
void xmain()
{
unsigned short n,m;
GPIO0DIR =0x3ff;
GPIO0CLR |=0x3ff;
for(n=0;n<12;n++)
GPIO0SET |=0x38;
GPIO0SET |=0x200;
for(n=0;n<12;n++);
GPIO0CLR |=0x200;
GPIO0CLR |=0x3ff;
for(n=0;n<12;n++)
GPIO0SET |=0x06;
GPIO0SET |=0x200;
for(n=0;n<12;n++);
GPIO0CLR |=0x200;
GPIO0CLR |=0x000003ff;
for(n=0;n<12;n++)
GPIO0SET |=0x0c;
GPIO0SET |=0x00000200;
for(n=0;n<12;n++);
GPIO0CLR |=0x00000200;
GPIO0CLR |=0x000003ff;
for(n=0;n<12;n++)
GPIO0SET |=0x01;
GPIO0SET |=0x00000200;
for(n=0;n<12;n++);
GPIO0CLR |=0x00000200;
while(1)
{
GPIO0CLR |=0x000003ff;
GPIO0SET |=0x80;
for(n=0;n<12;n++);
GPIO0SET |=0x00000200;
for(n=0;n<12;n++);
GPIO0CLR |=0x00000200;
for(m=0;m<10;m++)
{
GPIO0CLR |=0x3ff;
GPIO0SET |=0x100;
GPIO0SET |=0x30 + m;
or(n=0;n<12;n++);
GPIO0SET |=0x300;
for(n=0;n<12;n++);
GPIO0CLR |=0x200;
}
GPIO0CLR |=0x3ff;
GPIO0SET |=0xc0;
for(n=0;n<12;n++);
GPIO0SET |=0x200;
for(n=0;n<12;n++);
GPIO0CLR |=0x200;
for(m=0;m<13;m++)
{
GPIO0CLR |=0x3ff;
GPIO0SET |=0x100;
GPIO0SET |=0x41+m;
for(n=0;n<5;n++);
GPIO0SET |=0x300;
for(n=0;n<8;n++);
GPIO0CLR |=0x200;
}
}
}
|