单片机实验二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二
一、实验目的
(1)阅读S3C44B0X启动代码,观察处理器启动过程
(2)学会使用ADS辅助信息窗口分析判断调试过程和结果
(3)学会在ADS环境中编写、编译与调试汇编和C语言相互调用的程序。
二、实验设备
PC机、ADS1.2集成开发环境
三、实验内容
使用汇编语言完成一个随机数产生函数,通过C语言调用该函数,产生一系列随机数,存放到数组中。
四、实验代码
(1)randomtest.c参考源代码
/**************************************************************************
;* File:randtest.c
;* Author:
;* Desc:Random number generator demo program
;* Calls assembler function 'randomnumber' defined in random.s
;* History:
;***********************************************************************/
/*------------------------------------------------------------------------------------------*/
/* extern function
*/
/*------------------------------------------------------------------------------------------*/
extern unsigned int randomnumber( void );
/************************************************************************
;* name: main
;* func: c code entry
;* para: none
;* ret: none
;* modify:
;* comment:
;********************************************************************/
;C语言程序
int Main()
{
unsigned int i,nTemp;
unsigned int unRandom[10];
for( i = 0; i < 10; i++ )
{
nTemp = randomnumber();
unRandom[i] = nTemp;
}
return(0);
}
(2)unit.s参考源代码
;/***********************************************************************
;# File:init.s
*
;# Author: embest
*
;# Desc: C start up codes.Configure memory, Initialize ISR ,stacks,
*
;# initialize C-variables
*
;# Fill zeros into zero-initialized C-variables
*
;# History:
*
;#***************************************************************************/
;/*------------------------------------------------------------------------------------------*/
;/* global symbol define
*/
;/*------------------------------------------------------------------------------------------*/
AREA start,CODE,READONL Y
;/*.global __gccmain */
;/*------------------------------------------------------------------------------------------*/
;/* code
*/
;/*------------------------------------------------------------------------------------------*/
ENTRY
;设置中断/异常向量
b Reset_Handler
Undefined_Handler
b Undefined_Handler
SWI_Handler
b SWI_Handler
Prefetch_Handler
b Prefetch_Handler
Abort_Handler
b Abort_Handler
nop ; /* Reserved vector */
IRQ_Handler
b IRQ_Handler
FIQ_Handler
b FIQ_Handler
Reset_Handler
ldr sp, =0x00002000
;/ ***************************************************************************** ;该段代码实现:从汇编调用C函数
;重点关注IMPORT伪操作
*****************************************************************************/ IMPORT Main;引用外部程序Main
ldr r0, = Main;将Mian函数的地址加载到R0中
mov lr, pc ;将pc指向子程序
bx r0
;/ ***************************************************************************** ;无限循环
;应用结束,通常情况下不会再产生
;能调转到软件复位(B0x0)
*****************************************************************************/