|
5黑幣
本帖最后由 xianming 于 2020-3-24 19:49 編輯
STC15w4k32s4單片機(jī),用到adc,模擬i2c(OLED12864),串口,我先把a(bǔ)dc和i2c做完了,最后加上串口,本來以為沒問題了,要成功了 結(jié)果單片機(jī)發(fā)送完串口就自動復(fù)位了,程序不能繼續(xù)運(yùn)行。
main前面有很多頭文件,挺長的,不知道有沒有影響。
貼代碼
//頭文件比較長
#include <STC15F2K60S2.H>
#include "IOMode.h"
#include "table.h"
#include "OLED.h"
#include "ADC.h"
#include "Serial.h"
#define uchar unsigned char
uchar ge,shi,bai;
static uchar ch;
bit change;
void dispnum(uchar binnum,uchar xy);
void selectxy(uchar X,uchar Y);
void Delay30ms();
void main()
{
uchar i,x,y;
ch=0x00;
IOMode00();
//OLED_Init(0x20,0x00);
//InitADC(0x00,0x0C);
serialinit(11059200,9600);
SBUF=0x20;
while(!TI);
TI=0;
/*OLED16dot(0,2,0,xytab);
OLED16dot(0,4,1,xytab);
for(i=0;i<5;i++)
{
OLED16dot(16+i*16,0,i,titletab);
}
for(i=0;i<5;i++)
{
OLED16dot(16+i*16,6,i,keytab);
} */
//OLED816dot(16,2,4,numbertab);
//OLED816dot(16,4,5,numbertab);
//后面不用貼了,上面已經(jīng)出錯了
//下面是串口初始化代碼
#ifndef Serial_H
#define Serial_H
#include <intrins.h>
#define ULONG32 unsigned long
#define UINT16 unsigned int
#define UCHAR8 unsigned char
void serialinit(ULONG32 FOSC,UINT16 BAUD) //參數(shù):晶振頻率(頻率乘1000000=10^6),波特率 //(最高波特率65535,串口助手65535之內(nèi)最高可選57600)
{
P_SW1 &= 0x3F; //將P_SW1前兩位設(shè)置成00 (P3.0/RxD, P3.1/TxD)
SCON = 0x50; //8位可變波特率
T2L = (65536 - (FOSC/4/BAUD)); //設(shè)置波特率重裝值
T2H = (65536 - (FOSC/4/BAUD))>>8;
AUXR = 0x15; //T2為1T模式, 并啟動定時器2
//AUXR |= 0x01; //選擇定時器2為串口1的波特率發(fā)生器
ES = 1; //使能串口1中斷
EA = 1;
}
void sendbyte(UCHAR8 PrintByte)
{
//_push_(ACC);
//ACC = PrintByte; //獲取校驗(yàn)位P (PSW.0)
SBUF = PrintByte; //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
while(!TI);
TI=0;
//_pop_(ACC);
}
#endif
沒有用上最后sendbyte
大家?guī)臀铱纯矗瞄L時間沒解決了
|
|