STC15W408AS单片机 串口 中断 定时器 串口切换

本文档详细介绍了STC15W408AS单片机如何利用串口中断和定时器实现功能,包括串口配置、中断服务函数、延时程序、电机控制以及遥控信号处理。通过实例代码展示了如何读取和写入数据,并提供了完整的中断服务例程。
摘要由CSDN通过智能技术生成

/********************************************************************
实现功能:应用程序
使用芯片: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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值