作者:伟纳电子 Gguoqing
原文发表在伟纳电子论坛:http://www.willar.com/forum_view.asp?forum_id=25&view_id=5438
1.硬件准备
实验系统:ME300全系列单片机开发板。 实验芯片: ATmega8515L或Atmega8515。
2.软件准备
AVRStudio V4.11 http://www.atmel.com AVRStudio 是一个完整的开发工具,包括编辑、仿真功能,利用这个工具我们可以编辑源程序代码,并在AVR器件上运行。
ME300_V3.1版控制软件 http://www.willar.com/down_view.asp?id=315
上述软件有收录在ME300随机光盘中
3.AVR 汇编语言学习环境的建立
安装AVRStudio和ME300_V3.1版控制软件。
1)创建一个新项目:
打开AVR Studio软件,选择“Project”菜单中的“New project”命令,弹出下面窗口。这里新建一个名为work1的项目。并在“Location”栏目中确定存放文件的路径与相应的文件夹。
点击“Finish”存盘后出现下面界面。
1
2)编辑汇编源程序:
用汇编语言编写的源程序如下:
;8只LED的跑马灯演示程序
.INCLUDE \"8515DEF.INC\" ;CPU配置文件 .ORG $0000
RJMP RESET ;上电复位跳转到主程序 .ORG $0013 ;代码段定位,跳过中断区
RESET:
LDI R16,LOW(RAMEND) ;设置堆栈指针 OUT SPL,R16
LDI R16,HIGH(RAMEND) OUT SPH,R16
LDI R16,0B11111111 ;设置PA口为输出端口 OUT DDRA,R16
START:
2
LDI R17,0B11111110 ;PA0输出低电平,LED0亮。 OUT PORTA,R17
LDI R16,50 ;延时1秒 RCALL DELAY
LDI R17,0B11111101 ;PA1输出低电平,LED1亮。 OUT PORTA,R17
LDI R16,50 ;延时1秒 RCALL DELAY
LDI R17,0B11111011 ;PA2OUT PORTA,R17
LDI R16,50 ;RCALL DELAY
LDI R17,0B11110111 ;PA3OUT PORTA,R17
LDI R16,50 ;RCALL DELAY
LDI R17,0B11101111 ;PA4OUT PORTA,R17
LDI R16,50 ;RCALL DELAY
LDI R17,0B11011111 ;PA5OUT PORTA,R17
LDI R16,50 ;RCALL DELAY
LDI R17,0B10111111 ;PA6OUT PORTA,R17
LDI R16,50 ;RCALL DELAY
LDI R17,0B01111111 ;PA7OUT PORTA,R17
LDI R16,50 ;RCALL DELAY
RJMP START ;
DELAY: ;PUSH R16 ;
输出低电平,LED2亮。 延时1秒 输出低电平,LED3亮。 延时1秒 输出低电平,LED4亮。 延时1秒 输出低电平,LED5亮。 延时1秒 输出低电平,LED6亮。 延时1秒 输出低电平,LED7亮。 延时1秒 循环执行 通用延时子程序 延时时间由R16调整
3
DELAY0: PUSH R16 DELAY1: PUSH R16 DELAY2: PUSH R16 DELAY3: DEC R16 BRNE DELAY3 POP R16 DEC R16 BRNE DELAY2 POP R16 DEC R16 BRNE DELAY1 POP R16 DEC R16 BRNE DELAY0 POP R16 RET
可以运用复制 / 粘贴方式将程序代码复制到 AVRStudio 的编辑窗口。
演示源程序:
[ 点击下载 ] ;(文件大小:530 Byte)
通用延时子程序资料: [ 点击下载 ] ;(文件大小:13.833 KB)
3)汇编源程序编译
3.1: 点击“Project”菜单中的“AVR Assemble setup”命令,弹出编译设置窗口,然后按下图设置: Hex Output Format 选择 {Intel intellec 8/MDS (Intel hex)},点击OK。
程序调试方法:
用AVR Studio软件模拟单片机的运行,观察单片机执行情况是否符合我们的要求。
★ 启动AVR Studio软件,选择“File”菜单中的“Open File”命令,汇编语言编写的程序则选择打开0bject Files(*.hex ; *.d90 ; *.a90 ; *. Obj)。见图1
4
图1 调入调试文件
(如果是调试C语言编写的程序则打开*.cof文件)。这时弹出仿真选项窗口,见图2:这里选择软件仿真“AVR Simulator”,目标CPU选择“Atmega8515”。
图2 选择调试工具和目标CPU
★ 点击上面窗口的“Finish”按钮后,出现下面界面见图3:左边的Workspace的I/O子窗口显示的是CPU的状态,右边窗口显示的是你的源程序。
5
图3 调试文件窗口
★ 将Processor和 I/O ATmega8515状态展开,见图4:在这里我们可以详细的观察控制本实验中PA口各脚的电平变化,以及延时情况。
6
图4
★ 我们注意到在上面窗口中,显示的时钟频率是4MHz,但本实验采用的时钟频率是1MHz,因此选择“Debug”菜单中的“AVR Simulator Options”命令,弹出下面窗口:
7
将Frequency 框内的值改为1.00 MHz,点击 OK。这时显示的时钟频率就是1 MHz了。见图6
8
3.2:点击“Project”菜单中的“Build”命令开始进行编译。源程序编译完成以后将生成work1.hex 目标文件。
在Output窗口内显示: Building project...
AVRASM: AVR macro assembler 2.0.31 (build 58 Apr 21 2005 14:17:40) Copyright (C) 1995-2005 ATMEL Corporation
D:\\documents and Settings\\Guoqing\\work1.asm(3): Including file 'D:\\Program Files\\Atmel\\AVR Tools\\AvrAssembler2\\Appnotes\\8515DEF.INC' AT90S8515 memory use summary [bytes]:
Segment Begin End Code Data Used Size Use% --------------------------------------------------------------- [.cseg] 0x000000 0x000096 114 0 114 8192 1.4% [.dseg] 0x000060 0x000060 0 0 0 512 0.0% [.eseg] 0x000000 0x000000 0 0 0 512 0.0% Assembly complete, 0 errors. 0 warnings
4. 烧写程序/演示
4.1 连接好ME300,设置ME300相关跳线到LED位置,锁紧座上放入一片ATmega8515L或Atmega8515,开启电源。
4.2 运行ME300软件(V3.1或以上版本)。
9
4.3 ME300软件中选择相应的芯片型号。
器件配置选项中按下图设置:
10
这里只设置第0页即可,其中的“时钟源选择”(熔丝位)选项中,选中表示0,不选中表示1。 如上图中设置的CKSEL3..0的值为:0001,按上图设置并编程后,单片机即使用内部RC振荡器, 工作频率1MHz,
注意:熔丝位配置错误将会锁死芯片导致再编程失败。
4.4 加载编译的文件work1.hex
4.5 烧写程序,正常即可观查到流水灯效果!
11
因篇幅问题不能全部显示,请点此查看更多更全内容