S3C2410 MDK实验---ARM汇编语言达成跑马灯
发布时间:2021-11-22 10:38:17 所属栏目:PHP教程 来源:互联网
导读:具体思路: 由于开发板是将GPF4-7与灯相连,所以通过设置GPFCON控制寄存器将将LED灯相连的引脚4,5,6,7设置为输出功能,将他们的上拉电阻设置为禁用(设置GPFUP为0),通过修改GPFDAT寄存器的数值来实现灯的亮和灭,主要是将具体引脚对应的GPFUP设置为0,
具体思路: 由于开发板是将GPF4-7与灯相连,所以通过设置GPFCON控制寄存器将将LED灯相连的引脚4,5,6,7设置为输出功能,将他们的上拉电阻设置为禁用(设置GPFUP为0),通过修改GPFDAT寄存器的数值来实现灯的亮和灭,主要是将具体引脚对应的GPFUP设置为0,使之为低电平,从而使灯可以亮。再设置几个延迟将灯亮的时间延长。最后用C语言的mian函数调用LEDTEST函数即可。 主要ARM代码部分: GPFCON EQU 0x56000050 GPFDAT EQU 0x56000054 GPFUP EQU 0x56000058 AREA LEDTESTARM,CODE,READONLY EXPORT LEDTEST IMPORT main ENTRY LEDTEST ;设置每个引脚的功能,设置GPF4-7为output LDR R0,=GPFCON LDR R1,=0x5500 STR R1,[R0] ;禁止他们的上拉电阻 LDR R0,=GPFUP LDR R1,=0xff00 STR R1,[R0] LDR R2,=GPFDAT ;下面进行跑马灯的循环 LOOP2 LDR R1,=0xdf STR R1,[R2] BL DELAY2 LOOP3 LDR R1,=0x7f STR R1,[R2] BL DELAY3 LOOP1 LDR R1,=0xef ;低电平设置 STR R1,[R2] BL DELAY1 ;延迟 LOOP4 LDR R1,=0xbf STR R1,[R2] BL DELAY4 ;延迟程序 DELAY1 LDR R3,=0x8ffff ;设置延长时间 DELAY5 SUB R3,R3,#1 ;r3=r3-1 CMP R3,#0x0 ;将r3的值与0相比较 BNE DELAY5 ;比较的结果不为0(r3不为0),继续调用delay1,否则执行下一条语句 B LOOP4 MOV PC,LR ;返回 DELAY2 LDR R3,=0x8ffff DELAY6 SUB R3,R3,#1 CMP R3,#0x0 BNE DELAY6 B LOOP3 MOV PC,LR DELAY3 LDR R3,=0x8ffff DELAY7 SUB R3,R3,#1 CMP R3,#0x0 BNE DELAY7 B LOOP1 MOV PC,LR DELAY4 LDR R3,=0x8ffff DELAY8 SUB R3,R3,#1 CMP R3,#0x0 BNE DELAY8 B LOOP2 MOV PC,LR END (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |