hd7290_led.c
来自「开发环境为CCS。DSP12个典型例子源码」· C语言 代码 · 共 216 行
C
216 行
// TI File $Revision: /main/3 $
// Checkin $Date: July 2, 2007 11:33:22 $
//###########################################################################
//
// FILE: HD7290_LED.c
//
// TITLE: DSP281x Device Getting Started Program.
//
// ASSUMPTIONS:
//
// This program requires the DSP281x V1.00 header files.
// As supplied, this project is configured for "boot to H0" operation.
//
// To work properly this test requires hardware configuration described
// below.
//
//###########################################################################
// $TI Release: DSP281x Header Files V1.11 $
// $Release Date: September 26, 2007 $
//###########################################################################
#include "DSP281x_Device.h" // DSP281x Headerfile Include File
#include "DSP281x_Examples.h" // DSP281x Examples Include File
void long_delay(void);
void short_delay(void);
void delay10ms(unsigned char);
void Write7279(unsigned char, unsigned char);
unsigned char read7279(unsigned char);
void send_byte(unsigned char);
unsigned char receive_byte(void);
void Gpio_select(void);
void Led_init(void);
#define CS GpioDataRegs.GPBDAT.bit.GPIOB15
#define CLK GpioDataRegs.GPBDAT.bit.GPIOB14
#define DATA GpioDataRegs.GPDDAT.bit.GPIOD5
#define KEY GpioDataRegs.GPDDAT.bit.GPIOD6
#define CMD_RESET 0xa4 //复位指令
#define CMD_TEST 0xbf //测试指令
#define DECODE0 0x80 //下载数据并按0方式译码,需要与具体数据下在其它格式作位或运算
#define DECODE1 0xc8 //下载数据并按1方式译码,需要与具体数据下在其它格式作位或运算
#define CMD_READ 0x15 //读键盘
#define UNDECODE 0x90 //下载数据不译码,需要与具体数据下在其它格式作位或运算
#define RTL_CYCLE 0xa3 //循环左移指令
#define RTR_CYCLE 0xa2 //循环右移指令
#define RTL_UNCYL 0xa1 //左移指令
#define RTR_UNCYL 0xa0 //右移指令
#define ACTCTL 0x98 //消隐控制,后跟控制数据
#define SEGON 0xe0 //段点亮指令,后跟控制数据
#define SEGOFF 0xc0 //端关闭指令,后跟控制数据
#define BLINKCTL 0x88 //闪烁控制,后跟控制数据
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE*/
InitPieCtrl();
/*初始化PIE中断矢量表*/
InitPieVectTable();
Gpio_select();
// Enable CPU INT1 which is connected to CPU-Timer 0:
IER |= M_INT1;
// Enable global Interrupts and higher priority real-time debug events:
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
//IDLE loop. Just sit and loop forever (optional):
Led_init();
for(;;);
}
// Insert all local Interrupt Service Routines (ISRs) and functions here:
// If local ISRs are used, reassign vector addresses in vector table as
// shown in Step 5
void send_byte( unsigned char out_byte)
{
unsigned char i;
CS=0;
long_delay();
for (i=0;i<8;i++)
{
if (out_byte&0x80)
{
DATA=1;
}
else
{
DATA=0;
}
CLK=1;
short_delay();
CLK=0;
short_delay();
out_byte=out_byte*2;
}
DATA=0;
}
void long_delay(void)
{
unsigned char i;
for (i=0;i<0x30;i++);
}
void short_delay(void)
{
unsigned char i;
for (i=0;i<8;i++);
}
void Write7279(unsigned char command, unsigned char dta)
{
send_byte(command);
send_byte(dta);
}
unsigned char read7279(unsigned char command)
{
unsigned char temp;
send_byte(command);
temp=receive_byte();
return(temp);
}
unsigned char receive_byte(void)
{
unsigned char i, in_byte;
DATA=1;
long_delay();
for (i=0;i<8;i++)
{
CLK=1;
short_delay();
in_byte=in_byte*2;
if (GpioDataRegs.GPDDAT.bit.GPIOD5==1)
{
in_byte=in_byte|0x01;
}
CLK=0;
short_delay();
}
DATA=0;
return (in_byte);
}
void delay10ms(unsigned char time)
{
unsigned char i;
unsigned int j;
for (i=0;i<time;i++)
{
for(j=0;j<0x390;j++)
{
if (!KEY)
{
;
}
}
}
}
void Led_init(void)
{
send_byte(CMD_RESET);
delay10ms(10);
Write7279(ACTCTL,0xFF);
delay10ms(10);
Write7279(DECODE1,0x00);
delay10ms(10);
Write7279(DECODE1+1,0x01);
delay10ms(10);
Write7279(DECODE1+2,0x02);
delay10ms(10);
Write7279(DECODE1+3,0x03);
delay10ms(10);
Write7279(DECODE1+4,0x04);
delay10ms(10);
Write7279(DECODE1+5,0x05);
delay10ms(10);
Write7279(DECODE1+6,0x06);
delay10ms(10);
Write7279(DECODE1+7,0x07);
delay10ms(10);
}
void Gpio_select(void)
{
EALLOW;
GpioMuxRegs.GPBMUX.bit.C6TRIP_GPIOB15=0;
GpioMuxRegs.GPBMUX.bit.C5TRIP_GPIOB14=0;
GpioMuxRegs.GPDMUX.bit.T3CTRIP_PDPB_GPIOD5=0;
GpioMuxRegs.GPDMUX.bit.T4CTRIP_SOCB_GPIOD6=0;
GpioMuxRegs.GPBDIR.bit.GPIOB15=1;
GpioMuxRegs.GPBDIR.bit.GPIOB14=1;
GpioMuxRegs.GPDDIR.bit.GPIOD5=1;
GpioMuxRegs.GPDDIR.bit.GPIOD6=1;
EDIS;
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?