
传不来 文件 直接发给你好了。
/*
头文件说明:
本头文件有三个可以调用的函数
1.串口的初始化函数 UESC_UART_Init(uint band)
1)参数是设定的波特率,晶振是12MHz,建议设置为2400.
2)注意初始化后要简短延时。
2. UESC_UART_Putchar(char kkk)
该函数可以向上位机发送一个字节的数据,参数就是要发送的数据。
本函数是用到了中断,这样程序在接收数据的时候可以运行其他程序。
单片机通过串口接收到数据之后将8位的数据放在 date 的外部变量中,所以在主函数里可以直接 *** 作接收来的变量;
接收到数据后同时会将外部变量flag置位,以适应不同的应用场合。
注意: 使用到串口是 定时器1不能使用。
发送单个字符的时候记得加 ‘’ 将字符括起来。
记得将flag置一;
第二次修改的内容:
给初始化函数加了晶振的选择,传递的参数就是晶振的频率 12M的晶振就传递12
注意:该函数在12M 24M 24.576M测试搜通过。 但是11.0592死活不成功,不要问为什么,搞得好像我知道似的!
建议在调用之前建议先测试一下该晶振频率能否通过。
第二次修改的内容:
解决了部分晶振频率串口通信失败的问题,现在所有的晶振均测试通过。
同时加了字符串输出函数:UART_PutString(char *s) 参数就是要显示的字符串,记得用“”。
作者@Jack_kk
完成日期:2014_4_14
第一次修改时间:2014_5_13
第二次修改时间:2014_5_18
第三次修改时间:2014_5_19
*/
#include<reg51.h>
#include<stdio.h>
#include"UART.h"
char get_char
bit flag
unsigned char date
void UESC_UART_Init(uint band,double MHz)
{
TMOD|=0x20
TH1=256-(double)(MHz*2604)/band
TL1=TH1
SM0=0 //和下面的一条语句同时设定串口工作方式
SM1=1
REN=1 //允许串口接收
EA=1 //总中断
TR1=1 //定时器开始
ES=1 //开串口中断
}
void UESC_UART_Putchar(char kkk)
{
ES=0
SBUF=kkk
while(!TI)
TI=0
ES=1
}
void UART_PutString(char *s)
{
while(*s)
{
UESC_UART_Putchar(*s++)
}
}
/*
void UESC_UART_Getchar(void) //这个部分注释掉是因为 没有用到中断。
{
ES=0 //发送数据之前把串口关闭
// TI=1 //这里是发送一个字符串printf的用法,先关闭窗口中断,然后TI 好就是这样、
// puts(" Please input a letter")
// TI=0
while(!RI)
RI=0
get_char=SBUF
// TI=1
// printf("The letter you just input is ")
// TI=0
SBUF=get_char
while(!TI)
TI=0
ES=1
}
*/
错了,那是串口头文件 sorry
/*
********************头文件说明**********************
本头文件适用于HC-HR04超声波模块
经封装本头文件可以直接调用的函数是:
1.Ultrasound_Init();
初始化定时器0;
2.Get_time();
取得距离函数,返回值是距离,单位厘米,声速是240m/s时的测量结果。
示例:
Ultrasound_Init()
while(1)
{
dis=Get_time()
display(dis)
}
注意:
1.本头文件占用了定时器0,在主函数里面就不要在使用定时器0了;
2.调用本头文件之前记得修改IO口
3.测量周期建议在60ms以上。
作者@Jack_kk
时间:2014_5_14
*/
#include"Ultrasound.h"
#include<intrins.h>
#include<reg51.h>
sbit Echo=P3^2
sbit Trig=P1^0
void Delay15us() //@12.000MHz
{
unsigned char i
i = 42
while (--i)
}
void Ultrasound_Init()
{
TMOD|=0x09
TH0=TL0=0
ET0=1
TR0=1
EA=1
}
unsigned int Get_dis()
{
int timeout=20000
Trig=1
Delay15us()
Trig=0
while(!Echo&timeout)
timeout--
timeout=20000
while(Echo&timeout)
timeout--
timeout=TH0*256+TL0 //这里偷了一点懒,将变量防死机变量timeout作为了返回值
TH0=TL0=0
return timeout*0.024
}
stc15w404as是用STC专用的烧录软件stc-isp烧录程序的,就是只能烧录程序,却不能读取程序的。目前也没有第三方的读取程序的软件。而且,STC官方声明,目前STC15系列单片机还不能解密。所以,烧录的程序是不可能读取出来的。即内部程序是不可能读出的。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)