📄 main.c
字号:
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
/**
sci
*/
//串口的发送程序,在波特率为38400时有误码,估计应该换电容,将电容增加到1uF或者更换为钽电容;
#include <string.h>
//#include "derivative.h"
//#include "Gb60_io.h"
typedef unsigned char UINT8; //!<unsigned 8 bit definition
typedef unsigned int UINT16; //!<unsigned 16 bit definition
typedef unsigned long UINT32; //!<unsigned 32 bit definition
typedef signed char INT8; //!<signed 8 bit definition
typedef int INT16; //!<signed 16 bit definition
typedef long int INT32; //!<signed 32 bit definition
//#define SCI2BDH (*((volatile unsigned char *)(0x20))) /* SCI2 baud rate register (high) */
//#define SCI2BDL (*((volatile unsigned char *)(0x21))) /* SCI2 baud rate register (low byte) */
//#define SCI2C1 (*((volatile unsigned char *)(0x22))) /* SCI2 control register 1 */
//#define SCI2C2 (*((volatile unsigned char *)(0x23))) /* SCI2 control register 2 */
//#define SCI2S1 (*((volatile unsigned char *)(0x24))) /* SCI2 status register 1 */
//#define SCI2S2 (*((volatile unsigned char *)(0x25))) /* SCI2 status register 2 */
//#define SCI2C3 (*((volatile unsigned char *)(0x26))) /* SCI2 control register 3 */
//#define SCI2D (*((volatile unsigned char *)(0x27))) /* SCI2 data register (low byte) */
#define LED1DIR PTCDD_PTCDD5
#define LED2DIR PTCDD_PTCDD6
#define LED3DIR PTCDD_PTCDD7
//#define LED4DIR PTBDD_PTBDD7
//#define LED5DIR PTBDD_PTBDD3
//#define LED6DIR PTBDD_PTBDD4
#define LED1 PTCD_PTCD5
#define LED2 PTCD_PTCD6
#define LED3 PTCD_PTCD7
//#define LED4 PTBD_PTBD7
//#define LED5 PTBD_PTBD3
//#define LED6 PTBD_PTBD4
#define KEY1DIR PTADD_PTADD2
#define KEY2DIR PTADD_PTADD3
#define KEY1 PTAD_PTAD2
#define KEY2 PTAD_PTAD3
#define BAUD_38400 0x0D //for busclk=4Mhz (clk rate=8Mhz)
#define DEFAULT_SCI_PORT 0x01
#define INIT_SCI2C2 0b00101100
void LedInit(void);
void ad_init(void);
void SCIInitGeneric(UINT32 u32BusClock, UINT32 u32BaudRate, UINT8 u8ComNumber);
void delay(unsigned int count);
void SCIStartTransmit(UINT8 cData);
void SCITransmitStr(UINT8 *pStr);
UINT16 Uint82Uint10(UINT8 nHexData);
void NumberToChar(unsigned int nDecadeData,
unsigned char * pChar,
unsigned char Length);
UINT8 DataBuffer[2];
UINT16 Datab1=0;
//unsigned char Temp;
void main(void) {
//unsigned char Temp;
UINT8 i=0x0;
unsigned char ucTemp[5]={0,0,0,0,0};
EnableInterrupts; /* enable interrupts */
/* include your code here */
//
LedInit();
ad_init();
SCIInitGeneric(4000000, 9600, DEFAULT_SCI_PORT);
//memset(ucTemp,0,sizeof(ucTemp));
for(;;) {
__RESET_WATCHDOG(); /* feeds the dog */
if(KEY2==1) {
LED1 =0;
LED2 =0;
LED3 =0;
// LED4 =1;
// LED5 =1;
// LED6 =1;
}
else
LED1 =1;
LED2 =1;
LED3 =1;
ATD1SC = 0;
while((ATD1SC & 0x80) != 0x80); //ccf位如果等于0,
DataBuffer[0] = ATD1RH;
Datab1 = Uint82Uint10(DataBuffer[0]);
NumberToChar(Datab1,ucTemp,5);
SCITransmitStr("The Voltage of Channel 1 is:");
SCITransmitStr(ucTemp);
SCITransmitStr("mV");
SCITransmitStr("\t");
//PTCD_PTCD6 =1;
//PTCD_PTCD7 =1;
//PTCD_PTCD5 =0;
//PTCD_PTCD6 =0;
//PTCD_PTCD7 =0;
//SCI1D=0x55;
} /* loop forever */
/* please make sure that you never leave main */
}
void ad_init(void) {
UINT8 i;
for(i=0;i<2;i++) {
DataBuffer[i]=0;
}
ATD1PE=0x01;
ATD1C=0xE1;
}
void LedInit(void) {
LED1DIR =1;
LED2DIR =1;
LED3DIR =1;
//LED4DIR =1;
//LED5DIR =1;
//LED6DIR =1;
KEY1DIR =0;
KEY2DIR =0;
}
void delay(unsigned int count) {
unsigned int i;
for(i=1;i<count;i++){
;
}
}
void SCIStartTransmit(UINT8 cData)
{
while (!SCI1S1_TDRE); /* ensure Tx data buffer empty */
SCI1D = cData; /* load data to SCI2 register */
while (!SCI1S1_TC); /* wait for Tx complete */
}
void SCIInitGeneric(UINT32 u32BusClock, UINT32 u32BaudRate, UINT8 u8ComNumber) {
UINT16 u16Sbr = 0;
u16Sbr = (UINT16) ((u32BusClock) / (u32BaudRate * 16));
switch (u8ComNumber) {
case 1:
SCI1BDL = (UINT8) u16Sbr;
u16Sbr = u16Sbr >> 8;
SCI1BDH = (UINT8) u16Sbr;
SCI1C2 = INIT_SCI2C2;
break;
case 2:
SCI2BDL = (UINT8) u16Sbr;
u16Sbr = u16Sbr >> 8;
SCI2BDH = (UINT8) u16Sbr;
SCI2C2 = INIT_SCI2C2;
break;
default:
SCI1BDL = (UINT8) u16Sbr;
u16Sbr = u16Sbr >> 8;
SCI1BDH = (UINT8) u16Sbr;
SCI1C2 = INIT_SCI2C2;
break;
}
}
UINT16 Uint82Uint10(UINT8 nHexData) {
UINT8 temp[2]={0,0};
UINT16 result=0;
temp[0]=nHexData>>4;
temp[1]=nHexData&0x0F;
if(temp[1]==0x0a) temp[1]=10;
else if(temp[1]==0x0b) temp[1]=11;
else if(temp[1]==0x0c) temp[1]=12;
else if(temp[1]==0x0d) temp[1]=13;
else if(temp[1]==0x0e) temp[1]=14;
else if(temp[1]==0x0f) temp[1]=15;
result=(temp[0]*16+temp[1])*13;
return result;
}
void NumberToChar(unsigned int nDecadeData,
unsigned char * pChar,
unsigned char Length)
{
unsigned char uc;
for (uc = Length;uc ; )
{
pChar[--uc] = nDecadeData%10 + 0x30;
nDecadeData /=10;
}
}
void SCITransmitStr(UINT8 *pStr)
{
UINT16 i;
UINT16 nStrLen=strlen(pStr);
for (i=0; i<nStrLen; i++)
{
SCIStartTransmit(pStr[i]);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -