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

📄 hardware.c

📁 我里面有比较详细的7960的PDF
💻 C
字号:
#include "include.h"

void DelayMs(unsigned int n_ms) {
    unsigned int i = 0x2EE0; 
    while(n_ms --)
    {
        while(i --);
    }    
}


void CounterSet(void)
{
    TACTL |= TASSEL_2 + ID1 + ID0 + TACLR;          //SCLK, div 8, interrupt enable, timer stoped    
    TAR = 0;
    TACCTL0 |= CCIE;                                //compare interrupt enable    
    TACTL &= ~TACLR;                                //reset the timerA
}


void InitSysClk(void)
{
    BCSCTL1 = CALBC1_12MHZ;                         //Set DCO to 12MHz
    DCOCTL = CALDCO_12MHZ;
    BCSCTL2 = DIVS_1 + DIVM_1;
}


//**********************************************************************************
// 功能描述 : 接收中断服务程序
// 输入参数 : 无
// 返回参数 : 无
//**********************************************************************************
#pragma vector=TIMERA0_VECTOR
__interrupt void TimerAhandler(void)
{	
    unsigned char Register;
    stopCounter;                                    // 停止接收超时定时器
    irqCLR;		                    // 清除中断标志
    Register = IRQStatus;	                    // IRQ 状态地址
    ReadSingle(&Register, 1);	                    //读状态IRQ状态寄存器

    Register = Register & 0xF7;	                    //消除奇偶位
    
    if(Register == 0x00)
    {
        i_reg = 0x00;                               // 无任何中断,接收超时
    }
    else
    {
        i_reg = 0x01;                               // 如果有中断发生, 但是已经清除了PORT2的IRQ中断标志,发送: 发送还没有结束
    }    
    LPM0_EXIT;	
}

//**********************************************************************************
// 功能描述 : IRQ中断服务程序
// 输入参数 : 无
// 返回参数 : 无
//**********************************************************************************
#pragma vector = PORT1_VECTOR
__interrupt void IRQ(void)		 
{
    unsigned char Register[2];
    stopCounter;		    // 停止超时计数器
    do
    {
        irqCLR;			    //PORT2 interrupt flag clear         
        Register[0] = IRQStatus;	  
        ReadSingle(Register, 1);	    // 读IRQ状态寄存器    
        if(*Register == 0xA0)                       // TX active and only 3 bytes left in FIFO  
        {	
            goto FINISH;
        }
        InterruptHandlerReader(&Register[0]);
    } while((irqPORT & irqPIN) == irqPIN);
FINISH:
    LPM0_EXIT;
}

⌨️ 快捷键说明

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