⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 keyled.c

📁 dap下键盘控制程序,很有用哦,希望有所帮助.
💻 C
📖 第 1 页 / 共 2 页
字号:
/*
;***********************************************************************
;*				  						 北京达盛科技有限公司
;*                                     	    研    发    部
;*
;*                                 	http://www.techshine.com
;*
;*--------------------------------------------- 文件信息 ---------------                                      
;*
 *文件名称:keyled.c
 *文件标示:
 *摘    要:本文件内容为tms320lf2407 dsp操作键盘LED接口器件HD7279     
 *          的测试程序
 *************************************************************/

/*************************************************************/

#include "exp4_2407.h"

/*************************************************************/

#define UCHAR  				unsigned char
#define UINT16 				unsigned int
#define UINT32 				unsigned long

#define TRUE     			1
#define FALSE    			0

//--------------- HD7279A 指令 -----------------------------
#define CMD_RESET    0xa4     //复位
#define CMD_TEST     0xbf     //测试
#define RTL_UNCYL    0xa1     //左移
#define RTR_UNCYL    0xa0     //右移
#define RTL_CYCLE    0xa3     //循环左移
#define RTR_CYCLE    0xa2     //循环右移
#define DECODE0      0x80     //下载数据按方式0译码 
#define DECODE1      0xc8     //下载数据按方式1译码
#define UNDECODE     0x90     //下载数据但不译码
#define BLINKCTL     0x88     //闪烁控制
#define ACTCTL       0x98     //消隐控制
#define SEGON        0xe0     //段点亮
#define SEGOFF       0xc0     //段关闭
#define CMD_READ     0x15     //读键盘数据

//---------------------------------------------------------
/*   端口定义 */
//---------------------------------------------------------
ioport UINT16 port8001;       //定义输出io端口为0x8001;

//----------------------------------------------------------
/*   全局变量定义 */
//---------------------------------------------------------
char    send_buff = 0x00;       //发送缓冲
char    rece_buff = 0x00;       //接收缓冲
UINT16  data_buff = 0x0000;     //数据缓冲

UINT16  show = 0x00aa;
/*
**********************************************************************
          *************** 所使用的函数原型 *****************
**********************************************************************
*/

void cpu_init(void);              //初始化CPU

void xint1_init(void);            //外部中断1初始化子程序

void iope_init(void);             //初始化IOPE设置寄存器

interrupt void PHANTOM(void);     //伪中断程序

interrupt void int1(void);        //中断1中断子程序

extern void delay_8us(void);             //8us延迟  --T2\T3\T6\T7

extern void delay_25us(void);            //25us延迟 --T4\T5

extern void delay_50us(void);            //50us延迟 --T1

void delay_25ms(void);            //25ms延迟 --复位延迟

void cs_high(void);               //片选置高

void cs_low(void);                //片选置低

void send(void);                  // 发送一个字节 8BIT

void receive();                   // 接收一个字节 8BIT    

void Delay(UINT16 numbers);       //长延迟
//-------------------------------------------------------------------
/*
************************************************************************
			*********************** 函数定义 ******************
************************************************************************
*/

//--------------------------------------------------------------------
// 函数名称 : void cpu_init(void)
// 函数说明 : 初始化CPU
// 输入参数 : 无
// 输出参数 : 无
//--------------------------------------------------------------------
void cpu_init()

{

	asm(" nop ");
	asm(" nop ");
	asm(" nop ");
    asm(" setc INTM");         //禁止所有中断 ST0.9=INTM
    asm(" clrc SXM");          //抑制符号位扩展
    asm(" clrc OVM");          //累加器中结果正常溢出
    asm(" clrc CNF");          //配置 B0为数据储存器

/*** Configure the System Control and Status registers ***/    
    * SCSR1=0x00FD;            //配置时钟锁相为4倍频CLKOUT=4*10MHZ=40MHZ,MAX CPU freq
/*
 bit 15        0:      reserved
 bit 14        0:      CLKOUT = CPUCLK
 bit 13-12     00:     IDLE1 selected for low-power mode when execute IDLE instruction
 bit 11-9      000:    PLL x1 mode
 bit 8         0:      reserved
 bit 7         1:      1 = enable ADC module clock
 bit 6         1:      1 = enable SCI module clock
 bit 5         1:      1 = enable SPI module clock
 bit 4         1:      1 = enable CAN module clock
 bit 3         1:      1 = enable EVB module clock
 bit 2         1:      1 = enable EVA module clock
 bit 1         0:      reserved
 bit 0         1:      clear the ILLADR bit
*/    
 
      *SCSR2 = (*SCSR2 | 0x000B) & 0x000F;
    
/*
 bit 15-7      0's:    reserved
 bit 6         0:      Input Qualifier Clocks=5 clock
 bit 5         0:      D'ont write this bit.allows  user to disable WD through the WDDIS bit in the WDCR.
 bit 4         0:      XMIF_HI-Z, 0=normal mode, 1=Hi-Z'd
 bit 3         1:      disable the boot ROM, enable the FLASH
 bit 2         no change   MP/MC* bit reflects state of MP/MC* pin
 bit 1-0      11:      11 = SARAM mapped to prog and data
*/
    
/*** Disable the watchdog timer ***/
          
    * WDCR=0x00EF;             //禁止看门狗
/*
 bits 15-8     0's:     reserved
 bit 7         1:       clear WD flag
 bit 6         1:       disable the dog
 bit 5-3       101:     must be written as 101
 bit 2-0       111:     WDCLK divider = 64  WDCLK= CLKOUT/512
*/
	
/*** Setup external memory interface for LF2407  ***/
    WSGR = 0x001F;
/*
 bit 15-11     0's:    reserved
 bit 10-9      00:     bus visibility off
 bit 8-6       111:    7 wait-state for I/O space
 bit 5-3       111:    7 wait-state for data space
 bit 2-0       111:    7 wait state for program space
*/	

/*** Setup shared I/O pins ***/
    *MCRA = 0x0000;  /* group A pins */
/*
 bit 15        0:      0=IOPB7,     1=TCLKINA
 bit 14        0:      0=IOPB6,     1=TDIRA
 bit 13        0:      0=IOPB5,     1=T2PWM/T2CMP
 bit 12        0:      0=IOPB4,     1=T1PWM/T1CMP
 bit 11        0:      0=IOPB3,     1=PWM6
 bit 10        0:      0=IOPB2,     1=PWM5
 bit 9         0:      0=IOPB1,     1=PWM4
 bit 8         0:      0=IOPB0,     1=PWM3
 bit 7         0:      0=IOPA7,     1=PWM2
 bit 6         0:      0=IOPA6,     1=PWM1
 bit 5         0:      0=IOPA5,     1=CAP3
 bit 4         0:      0=IOPA4,     1=CAP2/QEP2
 bit 3         0:      0=IOPA3,     1=CAP1/QEP1
 bit 2         0:      0=IOPA2,     1=XINT1
 bit 1         0:      0=IOPA1,     1=SCIRXD
 bit 0         0:      0=IOPA0,     1=SCITXD
*/

    *MCRB = 0xFE03;    /* group B pins */
/*
 bit 15        1:      0=reserved,  1=TMS2 (always write as 1)
 bit 14        1:      0=reserved,  1=TMS  (always write as 1)
 bit 13        1:      0=reserved,  1=TD0  (always write as 1)
 bit 12        1:      0=reserved,  1=TDI  (always write as 1)
 bit 11        1:      0=reserved,  1=TCK  (always write as 1)
 bit 10        1:      0=reserved,  1=EMU1 (always write as 1)
 bit 9         1:      0=reserved,  1=EMU0 (always write as 1)
 bit 8         0:      0=IOPD0,     1=XINT2/ADCSOC
 bit 7         0:      0=IOPC7,     1=CANRX
 bit 6         0:      0=IOPC6,     1=CANTX
 bit 5         0:      0=IOPC5,     1=SPISTE
 bit 4         0:      0=IOPC4,     1=SPICLK
 bit 3         0:      0=IOPC3,     1=SPISOMI
 bit 2         0:      0=IOPC2,     1=SPISIMO
 bit 1         1:      0=IOPC1,     1=BIO*
 bit 0         1:      0=IOPC0,     1=W/R*
*/

    *MCRC = 0x0001;    /* group C pins */
/*
 bit 15        0:      reserved
 bit 14        0:      0=IOPF6,     1=IOPF6
 bit 13        0:      0=IOPF5,     1=TCLKINB
 bit 12        0:      0=IOPF4,     1=TDIRB
 bit 11        0:      0=IOPF3,     1=T4PWM/T4CMP
 bit 10        0:      0=IOPF2,     1=T3PWM/T3CMP
 bit 9         0:      0=IOPF1,     1=CAP6
 bit 8         0:      0=IOPF0,     1=CAP5/QEP4
 bit 7         0:      0=IOPE7,     1=CAP4/QEP3
 bit 6         0:      0=IOPE6,     1=PWM12
 bit 5         0:      0=IOPE5,     1=PWM11
 bit 4         0:      0=IOPE4,     1=PWM10
 bit 3         0:      0=IOPE3,     1=PWM9
 bit 2         0:      0=IOPE2,     1=PWM8
 bit 1         0:      0=IOPE1,     1=PWM7
 bit 0         1:      0=IOPE0,     1=CLKOUT    
*/

/*** Configure IOPA pin as an INPUT ***/
    *PADATDIR = *PADATDIR & 0x00FF;
 
/*** Configure IOPB pin as an INPUT ***/
    *PBDATDIR = *PBDATDIR & 0x00FF;
    
/*** Configure IOPC pin as an INPUT ***/
    *PCDATDIR = *PCDATDIR & 0x00FF;
    
/*** Configure IOPD pin as an INPUT ***/
    *PDDATDIR = *PDDATDIR & 0xFEFF; 

/*** Configure IOPE pin as an INPUT ***/
    *PEDATDIR = *PEDATDIR & 0x00FF; 
    
/*** Configure IOPF pin as an INPUT ***/
    *PFDATDIR = *PFDATDIR & 0x7FFF;           
    

/*** Setup timers 1 and 2, and the PWM configuration ***/
    *T1CON = 0x0000;                    /* disable timer 1 */
    *T2CON = 0x0000;                    /* disable timer 2 */

    *GPTCONA = 0x0000;                  /* configure GPTCONA */
    *GPTCONB = 0x0000;                  /* configure GPTCONB */
/*     
 bit 15        0:      reserved
 bit 14        0:      T2STAT, read-only
 bit 13        0:      T1STAT, read-only
 bit 12-11     00:     reserved
 bit 10-9      00:     T2TOADC, 00 = no timerX event starts ADC
 bit 8-7       00:     T1TOADC, 00 = no timerX event starts ADC
 bit 6         0:      TCOMPOE, 0 = Hi-z all timer compare outputs
 bit 5-4       00:     reserved
 bit 3-2       00:     TXPIN, 00 = forced low
 bit 1-0       00:     TXPIN, 00 = forced low
*/
     
     * IMR=0x0000; 

/*     
 bit 15-6     0:      reserved
 bit 5        0:      Level INT6 is masked
 bit 4        0:      Level INT5 is masked
 bit 3        0:      Level INT4 is masked
 bit 2        0:      Level INT3 is masked
 bit 1        0:      Level INT2 is masked
 bit 0        0:      Level INT1 is masked

*/

     * IFR=0xFFFF;              //清除所有中断标志,"写1清0"

}

//--------------------------------------------------------------------
// 函数名称 : void xint1_init(void)
// 函数说明 : 初始化XINT1
// 输入参数 : 无
// 输出参数 : 无
//--------------------------------------------------------------------

void xint1_init()               //外部中断1初始化子程序
{ 
     * IMR=0x0001;              //使能int1中断  --XINT2 Peripheral Interrupt Vector 0001h
                                //when XINT1 IS high-priority mode                              
     * XINT1CR=0x8001;          //使能xint1中断,下降沿有效,高优先级,清xint1中断标志
/*     
 bit 15       1:      XINT2 flag --write "1" to clear
 bit 14-3     0:      reserved
 bit 2        0:      XINT2 Polarity --"1" falling eage
 bit 1        0:      XINT2 Priority --"0" High priority
 bit 0        1:      XINT2 Enable  --"1"  Enable interrupt
*/
     asm(" clrc INTM");         //开总中断
}

//--------------------------------------------------------------------
// 函数名称 : void iope_init(void)
// 函数说明 : 初始化IOPE设置寄存器
// 输入参数 : 无
// 输出参数 : 无
//--------------------------------------------------------------------

void iope_init()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -