/********************************************************************
实现功能:应用程序
使用芯片:STC15W408AS
晶振:11.0592MHZ
波特率:9600
编译环境:Keil 4
作者:张新春
项目定制程序开发:15981910271 微信同号
微信/手机:13603455408
QQ:115451619
淘宝店:汇诚科技 http://shop36330473.taobao.com
https://shop404420384.taobao.com
【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!
*********************************************************************/
#include<STC15W408AS.h>
#include<math.h> //计算小数点的头文件
#include <intrins.h> //用nop函数延时的头文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/*数据类型定义*/
typedef signed char int8;
typedef signed int int16;
typedef signed long int32;
typedef unsigned char uint8;
typedef unsigned int uint16;
typedef unsigned long uint32;
#define ENABLE_IAP 0x83 //系统工作时钟<12MHz 时,对IAP_CONTR 寄存器设置此值
#define CMD_IDLE 0
#define CMD_READ 1
#define CMD_PROGRAM 2
#define CMD_ERASE 3
#define ENABLE_IAP 0x83//SYSCLK<12MH
#define IAP_ADDRESS 0x0000 //存储地址
#define FOSC 11059200L
#define BAUD 9600
uchar sendBuf[10];//发送缓冲区
uchar receBuf[10];//接收缓冲区
uint16 datBuf[10]; //距离数据缓存区
#define S1_S0 0x40 //P_SW1.6
#define S1_S1 0x80 //P_SW1.7
/********************************************************************
初始定义
*********************************************************************/
sbit IN1 = P3^2; //输入信号1 中断0
sbit IN2 = P3^3; //输入信号2 中断1
sbit IN3 = P3^4; //输入信号3 电机1右限位
sbit IN4 = P1^0; //输入信号4 电机1左限位
sbit IN5 = P1^1; //输入信号5 电机2右限位
sbit IN6 = P1^2; //输入信号6 电机2左限位
sbit IN7 = P1^3; //输入信号7 手动控制端
sbit MA1 = P5^5; //输出
sbit MA2 = P5^4; //输出
sbit MB1 = P1^7; //输出
sbit MB2 = P1^6; //输出
sbit OUT1 = P1^5; //输出
sbit OUT2 = P1^4; //输出
sbit RS485_DIR = P3^5; //RS485方向控制
uchar k=100;
uchar add;
bit bz1=0;
bit bz2=0;
bit bz3=0;
bit bz4=0;
bit bz5=0;
bit bz6=0;
bit bz7=0;
bit write=0;
uint sec=0;
uint sec1=0;
uint tcnt=0;
uint tcnt1=0;
uchar r;
bit flag_zx=0;
bit jsbz1=0;//计数标志1
bit jsbz2=0;//计数标志1
uint ji_shu1=0;//计数变量1
uint ji_shu2=0;//计数变量2
uint ji_shu3=0;//计数变量3
uint ji_shu11=0;//计数变量1
uint ji_shu22=0;//计数变量2
uint ji_shu33=0;//计数变量3
uint js_date1=0;//接收计数变量1
uint js_date2=0;//接收计数变量2
uint NUM=0;//校验和
uchar jyh=0;//接收校验和
bit djbz1=0;//电机1标志
bit djbz2=0;//电机1标志
bit zxwbz=0;//左限位标志
bit yxwbz=0;//右限位标志
bit djqd=0;//电机启动
uint date2=0;
/********************************************************************
定义 ISP/IAP/EEPROM 命令
*********************************************************************/
void IapIdle();//禁用 ISP/IAP/EEPROM functionmake 单片机 在 一 安全 状态
uint8 IapReadByte(uint16 addr);//读数据
void IapProgramByte(uint16 addr, uint8 dat);//写数据
void IapEraseSector(uint16 addr);//擦除数据
void delay(uchar dat);//延时程序
void