} while(1);
}
;//------------------------------------------------------ 程序清单2 汇编加法函数Add.S 代码
;加法函数,原型为uint32 Add(uint32 x,uint32 y)
AREA AddC,CODE,READONLY EXPORT Add
Add
ADD R0,R0,R1 MOV PC,LR END
七、练习题
1.在实验参考程序中,如何以指针形式传递参数?(即设计 uint32 Add(uint32 *x,uint32 *y) 函数);
2.在汇编程序中是否可以调用C 语言程序?
实验6、C语言的启动汇编代码实验
一、参考程序
”S3C44B0X-ARM实验\\StartUp_C\\src”目录中源文件,START.s,在Hello.c文件中定义了Main()函数和main()函数。 //hello.c
#include
int main(void) //default main {
int i;
for(i=0;i<100;i++)
{
printf(\ printf(\ scanf(\
printf(\ } while(1);//halt return(0); }
//Main define by myself int Main(void) {
int i,j;
for(i=0;i<100;i++) {
j++ ; }
while(1);//halt return(0);
}
二、实验步骤
在project中设置好“Image entry point”。编译连接程序
打开调试器,在两个函数的入口处都设置好断点,调试全速运行,观察程序是否在Main()的断点中停下来,然后单步运行。
实验七:GPIO 输出控制实验
一、实验目的
熟悉ARM 芯片I/O 口编程配置方法; 掌握ARM 芯片I/O 口控制LED 显示的方法。 二、实验设备
硬件:嵌入式实验平台一套、仿真器一个、PC机一台。
软件:Windows 98/2000/NT/XP 操作系统、仿真器驱动程序、ADS开发软件一套。 三、实验内容
控制嵌入式实验箱上的LED 轮流点亮。 四、实验原理
S3C44B0X 芯片上共有71 个多功能I/O 引脚,他们分别为7 组I/O 端口: 2 个9 位I/O 端口(端口E 和F) 2 个8 位I/O 端口(端口D 和G) 1 个16 位I/O 端口(端口C)
1 个10 位I/O 端口(端口A) 1 个11 位I/O 端口(端口B)
每组端口都可以通过软件配置寄存器来满足不同系统合设计的需要。在运行主程序之 前,必须先对每一个用到的引脚的功能进行设置。如果某些引脚的附庸功能没有使用,那么 可以先将该引脚设置为I/O 口。
S3C44B0X 芯片与端口相关的寄存器 (1)端口控制寄存器(PCONA~G):在S3C44B0X 芯片中,大部分引脚是使用多路复用的,所以要确定每个引脚的功能。PCONn(端口控制寄存器)能够定义引脚功能。如果PG0~PG7 作为掉电模式下的唤醒信号,那么这些端口必须配置成中断模式。
(2)端口数据寄存器(PDATA~G):如果端口定义为输出口,那么输出数据可以写入PDATn 中相应的位;如果端口定义为输入口,那么输入数据可以从PDATn 相应的位中读入。
(3)端口上拉寄存器(PUPC~G):通过配置端口上拉寄存器,可以使该组端口与上拉电阻连接或断开。当寄存器中相应位配置为0 时,该引脚接上拉寄存器;当寄存器中相应位配置为1 时,该引脚不接上拉电阻。 (4)外部中断寄存器(EXTINT):通过不同的信号方式可以使8 个外部中断被请求。EXTINT 寄存器可以根据外部中断的需求,将中断触发信号配置为低电平触发,高电平触发,下降沿触发,上升沿触发和边沿触发几种方式。
五、PORT_C功能描述 1、各管脚功能
general I/O fun Data/Addr serial port
2、端口寄存器地址
3、端口寄存器操作说明