display.c

来自「利用MSP430FE427单片机」· C语言 代码 · 共 84 行

C
84
字号
#include "Config.h"
#include "display.h"
#include "LCD.h"
#include "USART.h"

extern uchar sd[16];

/*******************************************************************************
Init_TA()
定时器A的初始化,定时1秒中断一次
*******************************************************************************/
void Init_TA(void)
{
   TACTL = TACLR+TASSEL_1 + ID_3;
   TACCR0 = 4096;
   TACCTL0 &= ~CCIE;
   TACTL |= MC_1;
   P1DIR = 0x04;
}

/*******************************************************************************
delay()
延时函数
*******************************************************************************/
extern void delay(uint nn);

/*******************************************************************************
Hex2BcdLong()
十六进制码的转换
*******************************************************************************/
uint Hex2BcdLong(ulnt hex)
{
    ulnt temp;
    ulnt ret;
    uchar ii;

    ret=0;
    for(ii=0;ii<8;ii++)
    {
        ret>>=4;
        temp=hex%10;
        temp <<= 28;
        ret|=temp;
        hex=hex/10;
    }
    return(ret);
}

/*******************************************************************************
display()
显示函数
*******************************************************************************/
void display(void)
{
   Init_TA();
   TACCTL0 = CCIE;
   if(TA_Flag)
   {
      LCDMEM[9] = 0x00;  //显示数据域数据  每两位一显,间隔1秒
      LCDMEM[8] = 0x00;
      delay(400);
      TA_Flag = 0;
      TA_Add += 1;
      
      Hex2BcdLong(readdata[TA_Add-1]);
      LCDMEM[9] = sd[readdata[TA_Add-1] & 0x0F];
      LCDMEM[8] = sd[(readdata[TA_Add-1] >>4)&0xF];
      if(TA_Add >= r_buf[9])
      TA_Add = 0;
   }
}

/*******************************************************************************
Timer_A()
定时器A的中断函数
*******************************************************************************/
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
   TA_Flag = 1;
   TAR = 0;
}

⌨️ 快捷键说明

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