D11 D10 D9 SR SY SG D8 WR D7 EG D6 EY D5 D4 D3 D2 D1 NY D00 NG WY ER WG NR SR: 方向北的绿灯控制位; NY: 方向北的黄灯控制位 NR: 方向北的绿灯控制位 WG: 方向西的绿灯控制位 ER: 方向东的红灯控制位 WY: 方向西的黄灯控制位 EG: 方向东的绿灯控制位 WR: 方向西的红灯控制位 SG: 方向北的绿灯控制位 SY: 方向北的黄灯控制位 SR: 方向北的绿红灯控制位
五、方案论证及系统设计
本次实习有两种方案,C语言和汇编语言实现,由于考虑到算法的特点,以及C语言的简练,我采用C语言版。
1、新建一个项目:点击Project-New,将项目命名为ExpFIR.pjt,
并将项目保存在自己定义的文件夹下,注意文件夹一定要用英文名,不要将文件夹取名为中文名,因为CCS软件不能识别以中文命名的文件夹。
2、新建一个源文件:点击File-New-Source File可以打开一
个文本编辑窗口,点击保存按键,保存在和项目相同的一个文件夹下面(ExpFIR),保存类型选择*.ASM(如果源文件是C语言编写的,保存类型选择*.C,本实验中的例程是使用汇编语言编写的,所以选择*.ASM为保存类型),我们在这里将保存名字命名为AD7822.asm ,同样建立并命名一个为InitC5402.asm。
3、在项目中添加源文件:在新建立了一个源文件以后,要想使
用CCS编译器对该源文件进行编译还需要将源文件添加到项目中去。添加方法是在工程管理器中右键单击traffic.pjt,在弹出的菜单中选择Add Files,然后将刚才建立的AD7822.asm文件和InitC5402.asm添加到该项目中去。
5
六、程序流程图
CSL初始化 系统时钟设置 条件编译实现交通灯运行模式选择 TestCommand 自动运行模式 自动运行模式 自动运行模式 自动运行模式 自动运行模式 自动运行模式 Break
6
七、源程序
1、C++程序:
实验中取一个交通灯显示模块
/******************************************************************************/
/* Copyright 2004 by SEED Electronic Technology LTD. */ /* All rights reserved. SEED Electronic Technology LTD. */ /* Restricted rights to use, duplicate or disclose this code are */ /* granted through contract. */ /* MODULE NAME... DEC5502_IO */ /* FILENAME...... 5502_IO.c
*/
/* PROJECT....... Program and write operation on IO */
/* DESCRIPTION:This is an example of programming and write IO of DEC5502 * /******************************************************************************/
#include
//实验操控:
//选择TESTCOMMAND 1为自动运行,
2为夜间模式,
3为交通灯东西通, 4为交通灯南北通,
5为禁行。
#define TESTCOMMAND 1 //交通灯操作命令选择
unsigned int TestCommand =0; //无操作 #define TRAFFICAUTO 0xAA14//自动运行模式 #define TRAFFICNIGHT #define TRAFFICEAST
0xAA16//夜间模式 0xAA1A//东西通行
#define TRAFFICSOUTH 0xAA1B//南北通行 #define TRAFFICFORBID 0xAA1C//禁行
#define EASTEWEST 0x88c //交通灯东西通(南北禁行) #define SOUTHNORTH 0x311 //交通灯南北通(东西禁行) #define IOCHANGE 0x462 #define ALLFORBIN 0x914
//交通灯各方向黄灯亮 //交通灯各方向均禁行
7
void delay(int period);
volatile unsigned char* DEL = (volatile unsigned char *)0x600000;//交通灯
volatile unsigned char* DECCTL = (volatile unsigned char *)0x280001;//控制寄存器 main() {
/*初始化CSL库*/ CSL_init();
/*设置系统的运行速度为300MHz*/ PLL_setFreq(1, 0xF, 0, 1, 3, 3, 0);
/*初始化DSP外部EMIF*/ Emif_Config(); *DECCTL=0x40;
#if TESTCOMMAND==1 TestCommand =TRAFFICAUTO;//自动运行
#endif
#if TESTCOMMAND==2 TestCommand =TRAFFICNIGHT;//夜间模式 #endif
#if TESTCOMMAND==3 TestCommand =TRAFFICEAST;//交通灯东西通 #endif
#if TESTCOMMAND==4 TestCommand =TRAFFICSOUTH;//交通灯南北通 #endif
#if TESTCOMMAND==5 TestCommand =TRAFFICFORBID;//禁行 #endif for(;;) {
switch( TestCommand ) {
/*自动运行模式*/ case TRAFFICAUTO:
/*白天模式*/
/*从东西到南北*/ *DEL=EASTEWEST; delay(2000);
*DEL=IOCHANGE; delay(1000);
*DEL=SOUTHNORTH;
8

