欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
Proteus仿真 51單片機(jī)測試printf發(fā)送函數(shù) 可以發(fā)送字符串和數(shù)字
[打印本頁]
作者:
qewtggg
時(shí)間:
2019-7-7 16:44
標(biāo)題:
Proteus仿真 51單片機(jī)測試printf發(fā)送函數(shù) 可以發(fā)送字符串和數(shù)字
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(23.24 KB, 下載次數(shù): 84)
下載附件
2019-7-7 22:41 上傳
其他詳見附件!printf可以發(fā)送數(shù)字 put_seris_port("字符串");可以發(fā)送字符串,接收部分已經(jīng)寫好!
單片機(jī)源程序如下:
#include<reg52.h> //庫文件
#include<stdio.h>
#include "string.h"
#include "master.h"
#define uchar unsigned char//宏定義無符號字符型
#define uint unsigned int //宏定義無符號整型
/********************************************************************
端口定義
*********************************************************************/
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;
sbit P1_3=P1^3;
/********************************************************************
變量定義
*********************************************************************/
unsigned char uart_rx_finish=0;
unsigned char uart_rx_cnt=0;
unsigned char dis2[16]; //串口接收數(shù)據(jù)顯示
/********************************************************************
/********************************************************************
延時(shí)函數(shù)
*********************************************************************/
void delay_ms(uchar ms)
{ uchar i;
while(ms--)
for(i=0;i<120;i++);
}
void DelayUs2x(unsigned char t) // T=tx2+5 uS
{
while(--t);
}
/********************************************************************
主函數(shù)
*********************************************************************/
void main()
{
uint i=0;
UART_Init();
delay_ms(500);
delay_ms(500);
delay_ms(500);
while(1)
{ i++;
// puts_to_SerialPort("d\r\n"); //數(shù)據(jù)發(fā)送以\r\n作為結(jié)束符
printf("%d\r\n",i); //數(shù)據(jù)發(fā)送以\r\n作為結(jié)束符
delay_ms(500);
}
}
/********************************************************************
串口處理程序
*********************************************************************/
void UART_Init(void)
{
SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收
TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重裝
PCON = 0x00;
TH1 = 0xFD; // TH1: 重裝值 9600 波特率 晶振 11.0592MHz
TL1 = TH1;
TR1 = 1; // TR1: timer 1 打開
EA = 1; //打開總中斷
ES = 1; //打開串口中斷
}
void SendByte(unsigned char dat)//串口發(fā)送單字節(jié)數(shù)據(jù)
{
unsigned char time_out;
time_out=0x00;
SBUF = dat; //將數(shù)據(jù)放入SBUF中
while((!TI)&&(time_out<100)) //檢測是否發(fā)送出去
{time_out++;DelayUs2x(10);} //未發(fā)送出去 進(jìn)行短暫延時(shí)
TI = 0; //清除ti標(biāo)志
}
void SendStr(unsigned char *s,unsigned char length) //發(fā)送定長度字符串
{
unsigned char NUM;
NUM=0x00;
while(NUM<length) //發(fā)送長度對比
{
SendByte(*s); //放松單字節(jié)數(shù)據(jù)
s++; //指針++
NUM++; //下一個(gè)++
}
}
char putchar(char c) //printf函數(shù)會調(diào)用putchar()
{
SendByte(c);
return c;
}
void puts_to_SerialPort(uchar *s)
{
while(*s != '\0')
{
SendByte(*s);
s++;
delay_ms(5);
}
}
void UART_SER (void) interrupt 4 //串行中斷服務(wù)程序
{
uchar c;
if(RI) //判斷是接收中斷產(chǎn)生
{
c = SBUF;
if(c=='\n') {
uart_rx_finish=1;
dis2[uart_rx_cnt]='\0';
}
else{
if(uart_rx_cnt<sizeof(dis2)-1)
dis2[uart_rx_cnt++]=c;
}
RI=0; //標(biāo)志位清零
}
if(TI) //如果是發(fā)送標(biāo)志位,清零
TI=0;
}
/********************************************************************
結(jié)束
*********************************************************************/
復(fù)制代碼
所有資料51hei提供下載:
甲keil.rar
(61.74 KB, 下載次數(shù): 49)
2019-7-7 16:43 上傳
點(diǎn)擊文件名下載附件
printf發(fā)送
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1