2440汇编控制LED(IO端口)和串口输出,用于调试wince的startup.s函数

来源:互联网 发布:java int最大值 编辑:程序博客网 时间:2024/05/17 22:30

前几天因为休眠唤醒在startup.s函数中出现问题,因为OAL层的代码无法用仿真器调试,只好用点LED和串口的方法调试了。下面是汇编函数。

 

; rGPFDAT = (rGPFDAT & ~(0xf<<4)) | ((~data & 0xf)<<4);
LED_DISPLAY
 ldr r0,=GPFCON
 ldr r1,=0x5100    //设置GPF5为输入,GPF5为高电平时,LED灯亮
 str r1,[r0]
 ldr r0,=GPFDAT
 ldr r1,=0x00       //设置为低电平,关闭LED
 str r1,[r0]
 b .
_UartInit                      //初始化2440串口2,
 ldr r0,=GPHCON
 ldr r1,=0xA500
 str r1,[r0]
 mov r1,#0
 ldr r0,=0x50008000
 str r1,[r0,#0x8]
 mov r1,#0x3
 str r1,[r0]
 ldr r1,=0x245
 str r1,[r0,#0x4]
 mov r1,#36
 str r1,[r0,#0x28]
 mov pc,lr
;EXPORT _UartSendByte
_UartSendByte                  //在串口2输出字符“A”
 ldr r0,=0x50008000
 ldr r1,[r0,#0x10]
1
 tst r1,#0x02
 beq %B1
 ldr r1,=0x10000
2
 subs r1,r1,#1
 bne %B2
 
 mov r1,#65
 str r1,[r0,#0x20]
  
 ldr r1,=0x10000
3
 subs r1,r1,#1
 bne %B3
 mov pc,lr