temp = SCIReN(1,1,SerialBuff); if(temp==0)SCISendN(1,1,SerialBuff); EnableInterrupt(); } */
//未定义的中断处理函数,本函数不能删除 interrupt void isrDummy(void) { }
//中断处理子程序类型定义 typedef void( *ISR_func_t)(void);
//中断矢量表,如果需要定义其它中断函数,请修改下表中的相应项目 const ISR_func_t ISR_vectors[] @0xFFCC = {
isrDummy, // 0xFFCC //时基中断 isrDummy, // 0xFFCE //IIC中断 isrDummy, // 0xFFD0 //ADC转换中断 isrDummy, // 0xFFD2 //键盘中断 isrDummy, // 0xFFD4 //SCI2发送中断 isrDummy, // 0xFFD6 //SCI2接收中断 isrDummy, // 0xFFD8 //SCI2错误中断 isrDummy, // 0xFFDA //SCI1发送中断 // isrSCIre, // 0xFFDC //SCI1接收中断 isrDummy, // 0xFFDC //SCI1接收中断 isrDummy, // 0xFFDE //SCI1错误中断 isrDummy, // 0xFFE0 //SPI中断 isrDummy, // 0xFFE2 //TPM2溢出中断
isrDummy, // 0xFFE4 //TPM2通道1输入捕捉/输出比较中断 isrDummy, // 0xFFE6 //TPM2通道0输入捕捉/输出比较中断 isrT1Out, // 0xFFE8 //TPM1溢出中断
11
// isrDummy, // 0xFFE8 //TPM1溢出中断
isrDummy, // 0xFFEA //TPM1通道5输入捕捉/输出比较中断 isrDummy, // 0xFFEC //TPM1通道4输入捕捉/输出比较中断 isrDummy, // 0xFFEE //TPM1通道3输入捕捉/输出比较中断 isrDummy, // 0xFFF0 //TPM1通道2输入捕捉/输出比较中断 isrDummy, // 0xFFF2 //TPM1通道1输入捕捉/输出比较中断 isrDummy, // 0xFFF4 //TPM1通道0输入捕捉/输出比较中断 isrDummy, // 0xFFF6 //ICG的PLL锁相状态变化中断 isrDummy, // 0xFFF8 //低电压检测中断 isrDummy, // 0xFFFA //IRQ引脚中断 isrDummy // 0xFFFC //SWI指令中断
//RESET是特殊中断,其向量由开发环境直接设置(在本软件系统的Start08.o文件中) };
Timer.h:
#ifndef timeR_H #define timeR_H
#include \#include \
#define TPM_CSTR(x)(*(vuint8 *)(0x00000020+(x-1)*64)) #define TPM_CNTH(x)(*(vuint8 *)(0x00000021+(x-1)*64)) #define TPM_CNTL(x)(*(vuint8 *)(0x00000022+(x-1)*64)) #define TPM_MODH(x)(*(vuint8 *)(0x00000023+(x-1)*64)) #define TPM_MODL(x)(*(vuint8 *)(0x00000024+(x-1)*64)) #define EnabletimerInt(x) TPM_CSTR(x) |= TPM1SC_TOIE_MASK #define DisabletimerInt(x) TPM_CSTR(x) &=~TPM1SC_TOIE_MASK #define TPM_NUM_1 1 #define TPM_NUM_2 2 #define TPM1_CH_0 0
12
#define TPM1_CH_1 1 #define TPM1_CH_2 2 #define TPM1_CH_3 3 #define TPM1_CH_4 4 #define TPM1_CH_5 5 #define TPM2_CH_0 0 #define TPM2_CH_1 1 void TPMinit(uint8 TPMNo); void SecAdd1(uint8 *p); #endif
Timer.c:
#include \
void TPMinit(uint8 TPMNo){ if(TPMNo > 2) TPMNo = 2; else if(TPMNo < 1) TPMNo=1;
TPM_CSTR(TPMNo)=0b00010110; TPM_CNTH(TPMNo) = 0x00; TPM_CNTL(TPMNo) = 0x00; TPM_MODH(TPMNo) = 0x7A; TPM_MODL(TPMNo) = 0x12; }
void SecAdd1(uint8 *p){ *(p+7)+=1; if(*(p+7)>9){ *(p+7) = 0; *(p+6)+=1; if(*(p+6)>5){
13
*(p+6)=0; *(p+4) += 1; // if(*p>=24) // *p = 0; if(*(p+4)>9){ *(p+4)=0; *(p+3)+=1; if(*(p+3)>5){ *(p+3)=0; *(p+1)+=1; if(*(p+1)>9){ *(p+1)=0; *p+=1;
if(*(p+1)==4&&*p==2){ *(p+1)=0; *p=0; } } } } } } }
3.1.1串行通信子程序
SCI.h:
#ifndef SCI_H #define SCI_H
#include \
14
相关推荐: