立即注冊(cè) 登錄
返回首頁(yè)

uid:325161的個(gè)人空間

日志

STC15F2K60s2單片機(jī)外接串口實(shí)驗(yàn)

已有 1104 次閱讀2018-12-3 16:12 |個(gè)人分類:STC單片機(jī)

#include"STC15F2K60S2.h"
#include "string.h"
#define uchar unsigned char
#define Machine_Focs 11059200L //晶振頻率  
#define BAUD1 19200 //波特率

sbit Key3 = P1^7;
sbit Key1 = P3^2;
sbit Key2 = P3^3;
//sbit P_RXD=P1^0; //模擬串口接收
//sbit P_TXD=P1^1; //模擬串口發(fā)送

/*收發(fā)顯示數(shù)據(jù)相關(guān)*/
bit Uart1_Sendbusy = 0 ;   //標(biāo)記是否發(fā)送完成
uchar G_count;
unsigned char display; //數(shù)碼管顯示數(shù)據(jù)
uchar flag;
bit flg_1ms;    //1ms的標(biāo)志
uchar duanxuan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71}; //顯示0-f 

/**********************
函數(shù)名稱:Timer0
功能描述:定時(shí)器0的中斷響應(yīng)函數(shù) ,定時(shí)100us
***********************/
void Timer0() interrupt 1   
{
TH0=(65535-1000)/256;    //定時(shí)器初始值
TL0=(65535-1000)%256;
G_count++;
if(G_count==10)            //中斷10次對(duì)應(yīng)1ms
{
G_count=0;
flg_1ms=1;
}
    flag++;
if(flag==2)
flag=0;
switch(flag)
{
case 0: P2=0x00;P0=duanxuan[display/16];break;
    case 1: P2=0x01;P0=duanxuan[display%16];break;
}
}
void GPIO()
{
    P3M1 = 0x00;  P3M0 = 0x00; //準(zhǔn)雙向口
P2M1 = 0x00;  P2M0 = 0xff;
P1M1 = 0x00;  P1M0 = 0x00;   //開(kāi)漏模式
//    P0M1 = 0x00;  P0M0 = 0xff;   //推完模式
}

void Uart2_Init(void) //19200bps@11.0592MHz
{
S2CON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR |= 0x04; //定時(shí)器2時(shí)鐘為Fosc,即1T
T2L = 0x70; //設(shè)定定時(shí)初值
T2H = 0xFF; //設(shè)定定時(shí)初值
IE2 &= 0xFB; //禁止定時(shí)器2中斷
// IE2 |= 0x01;       //串口2中斷允許位
AUXR |= 0x10; //啟動(dòng)定時(shí)器2
}

void Timer5_Init(void) //1毫秒@11.0592MHz
{
AUXR |= 0x04; //定時(shí)器時(shí)鐘1T模式
T2L = 0xCD; //設(shè)置定時(shí)初值
T2H = 0xD4; //設(shè)置定時(shí)初值
AUXR |= 0x10; //定時(shí)器2開(kāi)始計(jì)時(shí)
}
void Send_Ascii(unsigned char dat)
{
// P_TXD = 0;
while(Uart1_Sendbusy);
Uart1_Sendbusy=1;
S2BUF=dat;
}

void main()
{
  GPIO();
  Timer5_Init();
  Uart2_Init();
  EA = 1;
//   Send_Ascii(0x12);
  while(1)
  { 
Send_Ascii(0x12);
  }
}
void Uart2_isr() interrupt 8
{
if (S2CON & 0x02)   //發(fā)送中斷
{
    S2CON &= ~0x02;
Uart1_Sendbusy = 0;
// P_TXD = 1;   
}
if(S2CON & 0x01)
{
   S2CON &= ~0x01;
   display = S2BUF;
}
}

路過(guò)

雞蛋

鮮花

握手

雷人

評(píng)論 (0 個(gè)評(píng)論)

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

返回頂部