发送端代码
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include "CAN.h"
#define BUZZ PORTK_PK5
#define BUZZ_dir DDRK_DDRK5
#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define BUS_CLOCK 32000000 //总线频率
#define OSC_CLOCK 16000000 //晶振频率
#define ID 0x0001 //发送标识符
#define data_len_TX 7 //发送数据长度
unsigned char k;
unsigned char senddata[8] = {'F','R','E','E','F','L','Y',0}; //发送的数据
struct can_msg msg_send, msg_get;
unsigned char datain=0;
/*************************************************************/
/* 初始化锁相环 */
/*************************************************************/
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×(SYNDIV+1)/(REFDIV+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
}
/************************************************************/
/* 初始化ECT模块 */
/************************************************************/
void initialize_ect(void){
ECT_TSCR1_TFFCA = 1; // 定时器标志位快速清除
ECT_TSCR1_TEN = 1; // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
ECT_TIOS = 0xff; //指定所有通道为输出比较方式
ECT_TCTL1 = 0x00; // 后四个通道设置为定时器与输出引脚断开
ECT_TCTL2 = 0x00; // 前四个通道设置为定时器与输出引脚断开
ECT_DLYCT = 0x00; // 延迟控制功能禁止
ECT_ICOVW = 0x00; // 对应的寄存器允许被覆盖; NOVWx = 1, 对应的寄存器不允许覆盖
ECT_ICSYS = 0x00; // 禁止IC及PAC的保持寄存器
ECT_TIE = 0x00; // 禁止所有通道定时中断
ECT
接收端代码
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include "CAN.h"
#include "LCD.h"
#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define BUS_CLOCK 32000000 //总线频率
#define OSC_CLOCK 16000000 //晶振频率
char *xianshi[3] = {
"飞翔科技开发板",
"检测到胎压数据为:",
};
#define ID 0x0001 //发送标识符
#define data_len_TX 7 //发送数据长度
unsigned char k;
unsigned char senddata[8] = {'F','R','E','E','F','L','Y',0}; //发送的数据
struct can_msg msg_send, msg_get;
unsigned char datain=0;
/*************************************************************/
/* 初始化锁相环 */
/*************************************************************/
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×(SYNDIV+1)/(REFDIV+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
}
/************************************************************/
/* 初始化ECT模块 */
/************************************************************/
void initialize_ect(void){
ECT_TSCR1_TFFCA = 1; // 定时器标志位快速清除
ECT_TSCR1_TEN = 1; // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
ECT_TIOS = 0xff; //指定所有通道为输出比较方式
ECT_TCTL1 = 0x00; // 后四个通道设置为定时器与输出引脚断开
ECT_TCTL2 = 0x00; // 前四个通道设置为定时器与输出引脚断开
ECT_DLYCT = 0x00; // 延迟控制功能禁止
ECT_ICOVW = 0x00; // 对应的寄存器允许被覆盖; NOVWx = 1, 对应的寄存器不允许覆盖
ECT_ICSYS = 0x00; // 禁止IC及PAC的保持寄存器
ECT_TIE = 0x00;
蜂鸣器代码
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#define LEDCPU PORTK_PK4
#define LEDCPU_dir DDRK_DDRK4
#define BUZZ PORTK_PK5
#define BUZZ_dir DDRK_DDRK5
#define BUZZ_ON 1
#define BUZZ_OFF 0
/*************************************************************/
/* 初始化蜂鸣器 */
/*************************************************************/
void INIT_BUZZ(void)
{
BUZZ_dir = 1;
LEDCPU_dir = 1;
}
/*************************************************************/
/* 延时函数 */
/*************************************************************/
void delay(void)
{
unsigned int i,j;
for(j=0;j<2;j++)
for(i=0;i<60000;i++)
;
}
/*************************************************************/
/* 主函数 */
/*************************************************************/
void main(void) {
DisableInterrupts; //禁止中断
INIT_BUZZ();
EnableInterrupts; //允许中断
LEDCPU = 0;
for(;;)
{
BUZZ = BUZZ_ON; //蜂鸣器响
delay();
BUZZ = BUZZ_OFF; //蜂鸣器不响
delay();
}
}
求助要想使发送端代码生成随机数发送到接收端代码,随机数正常范围在230kpa到250kpa,不在这个范围内蜂鸣器发出警报,应该怎么修改,把这三个代码结合