|
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include"string.h"
#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define LED_ON 0
#define LED_OFF 1
#define BUS_CLOCK 32000000 //总线频率
#define QSC_CLOCK 16000000 //晶振频率
#define BAUD 9600
unsigned char data_receive[]={ 0x81,0x00,0x02,0x1C,0x00,0x00,0x00,0x01,0x00,0x04,0xA4,0x00};
const char data_receivel[];
unsigned char i;
const char *rec;
/*************************************************************/
/* 初始化锁相环 */
/*************************************************************/
void INIT_PLL(void)
{
CLKSEL &= 0x7f; //set OSCCLK as sysclk
PLLCTL &= 0x8F; //Disable PLL circuit
CRGINT &= 0xDF;
#if(BUS_CLOCK == 40000000)
SYNR = 0x44;
#elif(BUS_CLOCK == 32000000)
SYNR = 0x43;
#elif(BUS_CLOCK == 24000000)
SYNR = 0x42;
#endif
REFDV = 0x81; //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
PLLCTL =PLLCTL|0x70; //Enable PLL circuit
asm NOP;
asm NOP;
while(!(CRGFLG&0x08)); //PLLCLK is Locked already
CLKSEL |= 0x80; //set PLLCLK as sysclk
}
/*************************************************************/
/* 初始化SCI */
/*************************************************************/
void INIT_SCI(void)
{
SCI0BD = BUS_CLOCK/16/BAUD; //设置SCI0波特率为9600
SCI0CR1 = 0x00; //设置SCI0为正常模式,八位数据位,无奇偶校验
SCI0CR2 = 0x0c; //允许接收和发送数据,禁止中断功能
}
/*************************************************************/
/* 串口发送函数 */
/*************************************************************/
void SCI_send(unsigned char data)
{
while(!SCI0SR1_TDRE); //等待发送数据寄存器(缓冲器)为空
SCI0DRL = data;
}
/*************************************************************/
/* 串口接收函数 */
/*************************************************************/
unsigned char SCI_receive(void)
{
while(!SCI0SR1_RDRF); //等待发送数据寄存器满
return(SCI0DRL);
}
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {
DisableInterrupts;
INIT_PLL();
LEDCPU_dir = 1;
INIT_SCI();
EnableInterrupts;
LEDCPU=LED_ON;
for(;;)
{
*rec="SCI_receive()";
strcpy(data_receivel,rec) ;
for(i=0;i<12;i++)
{
if(data_receive[i]==data_receivel[i])
LEDCPU=LED_OFF;
else
LEDCPU=LED_ON;
}
}
}
2、问题:
从串口调试助手发送十六进制数值:81 00 02 1c 00 00 00 01 00 04 A4 00,现在需要做数组比较,利用strcpy函数赋值字符串,如果数组完全一样,执行LED灯灭。
目前不知道如何比较数组?
|
阿莫论坛20周年了!感谢大家的支持与爱护!!
如果天空是黑暗的,那就摸黑生存;
如果发出声音是危险的,那就保持沉默;
如果自觉无力发光,那就蜷伏于牆角。
但是,不要习惯了黑暗就为黑暗辩护;
也不要为自己的苟且而得意;
不要嘲讽那些比自己更勇敢的人。
我们可以卑微如尘土,但不可扭曲如蛆虫。
|