sunsundsp 发表于 2013-8-15 13:58

关于dsp LED的编程问题

首先附上程序   2812通过CPLD扩展了8路的LED灯,程序运行没问题,键盘还没有接的所以可以认为是全0,取反之后应该是1,所以全亮。可是当我将while循环中的LED=~KEYSCAN改成LED=0x80,8个灯还是全亮。
请问我哪里错了??

#include "DSP281x_Device.h"
#include "example_nonBIOS.h"   
#define LED (*((unsigned int *)0x4400))
#define KEY (*((unsigned int *)0x5800))
Uint16 KEYSCAN = 0;
void User_Init(void);
/**********************************************************************
* Function: main()
*
* Description: Main function for F281x example.
**********************************************************************/
void main(void)
{
    /*** CPU Initialization ***/
InitSysCtrl();// Initialize the CPU (FILE: SysCtrl.c)
InitXintf();// Initialize the external memory interface (FILE: Xintf.c)
   /*** Initialize the SYSTEM ***/
    User_Init();
   
    SetDBGIER(IER);// Configure the DBGIER for realtime debug      
    EINT;    // Enable global interrupts and realtime debug
    asm(" CLRC INTM, DBGM");
   
/*** Main Cycle ***/
while(1)
{
KEYSCAN = KEY;

LED =~ KEYSCAN;;//取反运算符~

}// End of while(1)
   
}// End of main()

void User_Init(void)
{
/*** Initialize the interrupts ***/
//InitXintrupt();//Initialize the external interrupts(File: Xintrupt.c)
IFR &= 0x0000;//Clear all interrupt flag
}// End of Init_main()

sunsundsp 发表于 2013-8-15 14:22

错了,LED是共阳极的 应该是低电平点亮 ,

zhangmangui 发表于 2013-8-15 21:13

你有没有研究过DSP和CPLD之间通讯的关系

sunsundsp 发表于 2013-8-16 08:52

zhangmangui 发表于 2013-8-15 21:13 static/image/common/back.gif
你有没有研究过DSP和CPLD之间通讯的关系

没有,其实问题我已经解决了,就是不知道原理是什么,我先定义了一个Uint16 LEDControl=0;
然后再while循环中先让LEDControl=某个值,在LED=LEDControl; 这样就能正常控制LED灯的亮灭了。

zhangmangui 发表于 2013-8-16 09:06

sunsundsp 发表于 2013-8-16 08:52 static/image/common/back.gif
没有,其实问题我已经解决了,就是不知道原理是什么,我先定义了一个Uint16 LEDControl=0;
然后再while循 ...

你上面的代码是把按键值取反赋给了LED   可能是按键值没有变化而已
LED的这个映射地址就是CPLD给定的

sunsundsp 发表于 2013-8-16 09:40

zhangmangui 发表于 2013-8-16 09:06 static/image/common/back.gif
你上面的代码是把按键值取反赋给了LED   可能是按键值没有变化而已
LED的这个映射地址就是CPLD给定的   ...

那为什么不能直接赋值给LED呢?比如说LED=0x80,第一个灯灭其他灯亮?

zhangmangui 发表于 2013-8-16 10:08

sunsundsp 发表于 2013-8-16 09:40 static/image/common/back.gif
那为什么不能直接赋值给LED呢?比如说LED=0x80,第一个灯灭其他灯亮?

那就说明你的LED灯是低电平点亮啊80不就是10000000吗   

sunsundsp 发表于 2013-8-16 10:58

zhangmangui 发表于 2013-8-16 10:08 static/image/common/back.gif
那就说明你的LED灯是低电平点亮啊80不就是10000000吗

是啊,这个我知道,你可能没明白我的意思
我在while语句中 LED=0X80;
但是灯并没有如期的亮灭。但是我在while语句中
LEDControl=0x80;
LED=LEDControl;这样才能得到预期的结果。
我想问为什么会这样

zhangmangui 发表于 2013-8-16 11:44

sunsundsp 发表于 2013-8-16 10:58 static/image/common/back.gif
是啊,这个我知道,你可能没明白我的意思
我在while语句中 LED=0X80;
但是灯并没有如期的亮灭。但是我在w ...

哦明白了你这样吧   *LED = 0x80试试看
页: [1]
查看完整版本: 关于dsp LED的编程问题