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

📄 hd7279a.h

📁 自己写的TMS320LF2407A的精确延时函数和中断函数
💻 H
字号:
#ifndef  _HD7279A_
#define  _HD7279A_
//--------------- 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     //读键盘数据

**********************************************************************
          *************** 所使用的函数原型 *****************
**********************************************************************
*/

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 cs_high(void)             
// 函数说明 : 片选置高
// 输入参数 : 无
// 输出参数 : 无
//--------------------------------------------------------------------    
void cs_high()
{

   asm(" setc xf");
   
}   

//--------------------------------------------------------------------
// 函数名称 : void cs_low(void)             
// 函数说明 : 片选置低
// 输入参数 : 无
// 输出参数 : 无
//--------------------------------------------------------------------    
void cs_low()
{

   asm(" clrc xf");
   
} 

//--------------------------------------------------------------------
// 函数名称 : void send(void)             
// 函数说明 : 发送一个字节 8BIT,高位在前 
// 输入参数 : 发送数据在全局变量send_buff中
// 输出参数 : 无
//-------------------------------------------------------------------- 
void send()
{         
          unsigned int  i;
          
          cs_low();                     //片选CS=0
          delay_50us();                 //延时50us
          
          for(i=0;i<8;i++)
          {
               switch(send_buff&0x80)
               {
                   case 0x00:* PEDATDIR = * PEDATDIR & 0xfffb;  //7279data低
                               break;                          
                   case 0x80:* PEDATDIR = * PEDATDIR | 0x0004;  //7279data高
               }
               
               * PEDATDIR=* PEDATDIR | 0x0002;   //7279clk高
               delay_8us();
               * PEDATDIR=* PEDATDIR & 0xfffd;    //7279clk低
               delay_8us();
               send_buff<<=1;
           }
             
          // cs_high();                     //片选CS=1  
                                          //这时,7279CS=1,7279CLK=0
}

//--------------------------------------------------------------------
// 函数名称 : void receive(void)             
// 函数说明 : 接收一个字节 8BIT,高位在前 
// 输入参数 : 接收到的数据在全局变量rece_buff中
// 输出参数 : 无
//-------------------------------------------------------------------- 

void receive()
{
         unsigned int i;
         
         * PEDATDIR = * PEDATDIR & 0xFBF7; //iope2   配置为输入脚,7279发数据
                                         //iope3 = '0',准备接收数据
         delay_50us();

         for(i=0;i<8;i++)
         {
            * PEDATDIR=* PEDATDIR|0x0002; //7279clk高
            
            delay_8us();
            
            data_buff=data_buff|((* PEDATDIR & 0x0004)<<(13-i));//读iope2引脚数据; 
                                                                //把接收到数据放在BIT15~8
            * PEDATDIR=* PEDATDIR & 0xFFFD; //7279clk低
            
            delay_8us();
            
         }
         
         asm(" nop ");                          //在这里设置断点观察data_buff中的值  
         rece_buff=(data_buff>>8) & 0x00ff;     //接收到的数据右移给rece_buff   
          
         data_buff=0x0000;                     //清除data_buff
                       
         * PEDATDIR=* PEDATDIR | 0x040c;      //iope2配置为输出脚=1,7279收数据
                                              //iope3配置为'1',接收7279的数据
         
}
#endif

⌨️ 快捷键说明

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