欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 1800|回復(fù): 0
收起左側(cè)

用PROTEUS仿真單片機(jī)串口通訊

[復(fù)制鏈接]
ID:788784 發(fā)表于 2020-6-24 16:19 | 顯示全部樓層 |閱讀模式

設(shè)計(jì)要求:
實(shí)現(xiàn)與Proteus中的8051單片機(jī)進(jìn)行串行通信。先回顧一下串行通信。在串行通信中有兩個(gè)引腳分別稱(chēng)為TXRXTX引腳用于發(fā)送數(shù)據(jù),而RX引腳用于接收數(shù)據(jù)。
8051微控制器具有這兩個(gè)引腳,因此它支持串行通信,并且這些引腳位于AT89C52微控制器的10號(hào)和11號(hào)引腳上。
首先,將對(duì)此項(xiàng)目進(jìn)行原理圖設(shè)計(jì)(如下圖),在端口1上連接8個(gè)LED,并通過(guò)串行端口發(fā)送字符來(lái)打開(kāi)或關(guān)閉這些LED。設(shè)計(jì)完原理圖之后,我們將為8051微控制器設(shè)計(jì)編程代碼,并測(cè)試結(jié)果。


#include <reg52.h>
#define Baud_rate 0xFD // BAUD RATE 9600
void SerialInitialize(void);
void SendByteSerially(unsigned char);
void cct_init(void);
sbit Appliance1 = P1^0;
sbit Appliance2 = P1^1;
sbit Appliance3 = P1^2;
sbit Appliance4 = P1^3;
sbit Appliance5 = P1^4;
sbit Appliance6 = P1^5;
sbit Appliance7 = P1^6;
sbit Appliance8 = P1^7;
void main()
{
cct_init();
SerialInitialize();
EA = 1;
ES = 1;
while(1) {;}
}
void cct_init(void) //initialize cct
{
P0 = 0x00; //not used
P1 = 0x00; //Used for Appliances
P2 = 0x00; //not used
P3 = 0x03; //used for serial
}
void SerialInitialize(void) // INITIALIZE SERIAL PORT
{
TMOD = 0x20;// Timer 1 IN MODE 2 -AUTO RELOAD TO GENERATE BAUD RATE
SCON = 0x50;// SERIAL MODE 1, 8-DATA BIT 1-START BIT, 1-STOP BIT, REN
//ENABLED
TH1 = Baud_rate;// LOAD BAUDRATE TO TIMER REGISTER
TR1 = 1;// START TIMER
}
void SendByteSerially(unsigned char serialdata)
{
SBUF = serialdata; // LOAD DATA TO SERIAL BUFFER REGISTER
while(TI == 0);// WAIT UNTIL TRANSMISSION TO COMPLETE
TI = 0;// CLEAR TRANSMISSION INTERRUPT FLAG
}
void serial_ISR (void) interrupt 4
{
//receive character
char chr;
if(RI==1)
{
chr = SBUF;
RI = 0;
}
P0 = ~P0; //Show the data has been updated
switch(chr)
{
case '1': Appliance1 = 1; SendByteSerially('k'); break;
case '2': Appliance2 = 1; SendByteSerially('k'); break;
case '3': Appliance3 = 1; SendByteSerially('k');break;
case '4': Appliance4 = 1; SendByteSerially('k'); break;
case '5': Appliance5 = 1; SendByteSerially('k'); break;
case '6': Appliance6 = 1; SendByteSerially('k'); break;
case '7': Appliance7 = 1; SendByteSerially('k'); break;
case '8': Appliance8 = 1; SendByteSerially('k'); break;
case 'a': Appliance1 = 0; SendByteSerially('k'); break;
case 'b':Appliance2 = 0; SendByteSerially('k'); break;
case 'c': Appliance3 = 0; SendByteSerially('k'); break;
case 'd': Appliance4 = 0; SendByteSerially('k'); break;
case 'e': Appliance5 = 0; SendByteSerially('k'); break;
case 'f': Appliance6 = 0; SendByteSerially('k'); break;
case 'g': Appliance7 = 0; SendByteSerially('k'); break;
case 'h': Appliance8 = 0; SendByteSerially('k'); break;
default: ;break; //do nothing
}
RI = 0;
}

1.png
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表