📄 funchw.c
字号:
//#include "includes.h"
#include <p18cxxx.h>
#include "includes.h"
#include "comstruct.h"
#include "hardware.h"
#include "devuart0.h"
//extern MCNM_FILE SystemFile;
extern INT16U uart0_ioctl(INT8U, INT24U);
extern OS_MEM *pMemSml;
extern OS_MEM *pMemLge;
extern OS_EVENT *rom peventDEBUG;
extern OS_EVENT *rom peventWICResp;
extern OS_EVENT *rom peventHardware;
extern OS_EVENT *rom peventDVS;
extern OS_EVENT *rom peventWICCmd;
extern OS_EVENT *rom peventTimer;
extern OS_EVENT *rom peventPPPReceiver;
//zwm for debug
extern unsigned char DebugReadLength;
extern unsigned char DebugContent[48];
extern INT8U rom ModuleMod;
extern void Do_Key_Init(void);
extern unsigned char Key_Scan(void);
#pragma romdata EXTRAM
extern INT8U chrCOMBusy;
extern INT8U CurRxNum;
extern INT8U rom * pCurRxTail;
extern INT8U rom * pCurRxHead;
extern INT16U intCurTxNum;
extern INT8U rom * pCurTxHead;
extern INT8U ComCurStt;
#pragma romdata COMMODE_P = 0x131e00
volatile unsigned char rom ComCtl;
#pragma code MYCODE
/***********************************************Board test******************************************************/
void Func_Trap(void){
for(;;){
}
}
/***************************************************************************************************************/
void Func_Brd_Init(void){
//Init the oscillator system
PSPCONbits.CMLK1 = 1;
PSPCONbits.CMLK0 = 1;
OSCCON = 0b00000000; //Disable the PLL, use primary oscillator input
Nop(); //Wait until the lock closed
Nop();
//Init the external memory interface and chip select pins
PSPCONbits.CMLK1 = 1;
PSPCONbits.CMLK0 = 1;
MEMCON = 0b00110000; //0b00110000;
Nop(); //Wait until the lock closed
Nop();
PSPCONbits.CMLK1 = 1;
PSPCONbits.CMLK0 = 1;
CSEL2 = 0x80; //External RAM, 128K bytes start from 0x100000
Nop(); //Wait until the lock closed
Nop();
PSPCONbits.CMLK1 = 1;
PSPCONbits.CMLK0 = 1;
CSELIO=0x98; //IO address 8k bytes start from 0x130000
T0CONbits.TMR0ON = 0; //Disable timer0
T2CON = 0b01111001;
//Set I/O pins to proper direction
//If the function of pins is changed, this part shall be modified
//PortA
TRISAbits.TRISA0 = PA0_DIRECT;
//TRISAbits.TRISA1 = PA1_DIRECT;
TRISAbits.TRISA2 = PA2_DIRECT;
TRISAbits.TRISA3 = PA3_DIRECT;
TRISAbits.TRISA4 = PA4_DIRECT;
TRISAbits.TRISA5 = PA5_DIRECT;
//PortB
TRISBbits.TRISB0 = PB0_DIRECT;
TRISBbits.TRISB1 = PB1_DIRECT;
TRISBbits.TRISB2 = PB2_DIRECT;
TRISBbits.TRISB3 = PB3_DIRECT;
TRISBbits.TRISB4 = PB4_DIRECT;
//TRISBbits.TRISB5 = PB5_DIRECT;
//leave RB6, RB7 for debug pins
//PortC
TRISCbits.TRISC0 = PC0_DIRECT;
TRISCbits.TRISC1 = PC1_DIRECT;
TRISCbits.TRISC2 = PC2_DIRECT;
//RC3, RC4 for I2C
TRISCbits.TRISC5 = PC5_DIRECT;
//RC6, RC7 for USART
//PortD as system bus
//PortE as system bus
//PortF
//TRISFbits.TRISF0 = PF0_DIRECT;
//TRISFbits.TRISF1 = PF1_DIRECT;
//TRISFbits.TRISF2 = PF2_DIRECT;
TRISFbits.TRISF3 = PF3_DIRECT;
TRISFbits.TRISF4 = PF4_DIRECT;
TRISFbits.TRISF5 = PF5_DIRECT;
//TRISFbits.TRISF6 = PF6_DIRECT;
//TRISFbits.TRISF7 = PF7_DIRECT;
//PortG as system bus control
//PortH
//RH0~RH3 as system bus
//TRISHbits.TRISH4 = PH4_DIRECT;
TRISHbits.TRISH5 = PH5_DIRECT;
TRISHbits.TRISH6 = PH6_DIRECT;
TRISHbits.TRISH7 = PH7_DIRECT;
//
ADCON1 = 0x0f; //Set all PORT pins digital
}
void Func_Start_TMR1(void){
IPR1bits.TMR1IP = 0; //set timer1 interrupt low priority
T1CON = 0b10110101;
TMR1H = 0xfb;
TMR1L = 0xa0;
PIE1bits.TMR1IE = 1; //Enable timer1 interrupt
}
unsigned char Func_ChangeCOMMode(unsigned char mode){
if(mode > 3) return (1); //error mode
OS_ENTER_CRITICAL();
ComCtl = mode;
uart0_ioctl(UART_CLRBUF,0);
ComCurStt = mode;
OS_EXIT_CRITICAL();
}
unsigned char Func_ReadCOMMode(void){
return (ComCurStt);
}
void Func_ResetWM(void){
unsigned int i;
RST_WL = 1;
for(i=0;i<1000;i++){
Nop();
}
RST_WL = 0;
RST_WL2 = 1;
}
void Func_SetVoiceCh(INT8U ctl){
if (ctl == VOX_HANDFREE){
EN_HS = 0;
EN_HF = 1;
}
else if (ctl == VOX_HANDSET){
EN_HS = 1;
EN_HF = 0;
}
else{
EN_HS = 0;
EN_HF = 0;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -