📄 全新小车.c
字号:
/*
// 头文件 //
#pragma OT(5,SIZE)
#include <reg52.h>
// 逻辑量
#define TRUE 1
#define FALSE 0
#define ALL_1 0xFF
// 简写--数据类型 //
#define UCHAR unsigned char
#define UINT unsigned int
// 简写--各口 //
#define P_MOTOR P0 // 电机数据输出口--P1 (低电平有效)
UCHAR *IP_MOTOR; // 电机运行数据表 指针
UCHAR data nstp; // 电机运行数据表下标值
UCHAR data MOTOR_ndelay; // 延时控制电机速度
#define P_VOICE P2 // 语音数据输出口--P2 (低电平有效)
sbit P_L_LED=P1^0; // 左转弯灯--指示输出--P2.0 (低电平有效)
sbit P_R_LED=P1^1; // 右转弯灯--指示输出--P2.1 (低电平有效)
sbit P_WORD_PULSE=P1^2; // 汉字脉冲信号--输出--P1.2 (低电平有效)
sbit P_DISTE_PULSE=P1^3; // 行程脉冲信号--输出--P1.3 (低电平有效)
sbit P_TIME_PULSE=P1^4; // 秒脉冲信号--输出--P1.4 (低电平有效)
sbit MODE_FLAGE=P1^7; // 无线模块工作模式
#define RECEIVE_MODE 0 // MODE_FLAGE =0 (RECEIVE_MODE)为接收
#define SEND_MODE 1 // MODE_FLAGE =1 (SEND_MODE) 为发送
// T0-延时计时-初始值(T0) //
#define T0_DELAY_H 0XEE // 0XEE=200Hz//0XDC=100Hz//0XB8=50Hz XTAL=11.0592MHz 定时初值(方式1-16位)
#define T0_DELAY_L 0x00
#define DELAY_RENEW 30 // 复位(T0=50Hz,100Hz,200Hz)=>(DELAY_RENEW=8,15,30)
#define DELAY_02s 40 //0.2S
#define DELAY_05s 100 // 依次类推
#define DELAY_1s 200
#define DELAY_2s 400
#define DELAY_4s 800 // 依次类推
// T1-波特率--初始值( SMOD 0;C/T=0; 模式 2)//
#define TIMECOM_9600 0xfd //XTAL=11.0592MHz 波特率=9600时初值
#define CTRLCOM_9600 0X00
// 以下是为了方便通信定义的
// 1 相关地址定义 //
#define MASTER_ID 0x00 // PC机地址
#define MY_ID 0xDD // 小车地址 221
#define ADD_TEST 0x00 // 外加校验
// Command //
// 2 小车运行状态 Command
#define NSTEP_END 0xff // 小车运行完指定操作反馈给PC
#define SEND_TIME_DISTENCE 0x66 // 命令发送状态
#define OUT_WORD_VOICE 0x77 // 命令输出站台汉字和语音
// 3 小车运行方向 Command &0x0f
#define STOP 0x00 // 停车
#define GO_AHEAD 0x01 // 向前直行
#define GO_BACK 0x02 // 向后直行
#define GO_LEFT 0x03 // 左转停车
#define GO_RIGHT 0x04 // 右转停车
UCHAR data MOTOR_where_ndelay_chang; // 控制电机转向速度切换
// 4 小车运行速度 Command &0xf0
#define LOW_SPEED 0x30 // 低速
#define MID_SPEED 0x20 // 中速
#define HIGH_SPEED 0x10 // 高速
#define LOW_SPEED_NDELAY 8 // 50*5ms运行1步
#define MID_SPEED_NDELAY 5 // 50*3ms运行1步
#define HIGH_SPEED_NDELAY 4 // 50*2ms运行1步
//***** 以上是为了方便通信定义的 **********
// 5 自定义函数 //
void InitDevice(void); // 初始化
void GetCOM(void); //主程序
void Get_LED(void); //转弯灯查询程序
void COM_intermit(void); // 串口中断
void Timer0_intermit(void); // T1中断(20ms/50Hz)
void Delay(UINT delay); // 延时
UCHAR data n5ms; // 5ms基准延时计数器
UINT data ndelay; // 最大延时 65536/200=327.68s
void Send_to_PC(void); // 发送状态数据
void OutVOICE(void); // 站台语音输出
void OutWORD(void); // 站台汉字输出
void Outdistence_pluse(void); // 里程脉冲输出
void OutTIME_pluse(void); //输出时间脉冲
void Send_COMMAND_OVER(void); // 反馈运行完标志
void ZW_RL_LED(UCHAR nc,UCHAR delay); // 转弯灯都闪- n为闪的次数,delay为延时既闪的快慢
void ZW_L_LED(UCHAR nc,UCHAR delay); // 左转弯灯闪- n为闪的次数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -