欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
N年前做的單片機雙機通訊時鐘PROTEUS仿真程序
[打印本頁]
作者:
feeling1791
時間:
2020-1-3 11:57
標題:
N年前做的單片機雙機通訊時鐘PROTEUS仿真程序
自定義三線雙機通訊,一個單片機產(chǎn)生時鐘數(shù)據(jù),通過三線自定協(xié)議傳送給另一個單片機,此單片機控制數(shù)碼管顯示出來,電腦里N年前的東東,慢慢發(fā),奉獻給大家,有疑問可以交流
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png
(15.09 KB, 下載次數(shù): 72)
下載附件
2020-1-3 14:49 上傳
單片機源程序如下:
;********************************************************************************
;* 描述: *
;* SM1623顯示MCU與DVD通訊 *
;********************************************************************************/
#include "mini.h"
BYTE TIME_sec;
BYTE TIME_min;
BYTE TIME_hour;
BIT SecChgFlag = 0;
BIT MinChgFlag = 0;
BIT HourChgFlag = 0;
BYTE TIME_system_sta = 0;
BYTE Send_speedtime = 0;
////////////////////////////////////////////////////////////////////////////////////////////////////
//延時函數(shù)定義,延時時間(12MHz):temp*12us+16us.
void Sys_Delay(WORD temp)
{
while(temp--)
NOP;
}
void TR1_Service(void) interrupt 3 using 2 //TR1的定時中斷函數(shù),此函數(shù)應(yīng)簡單。使用寄存器組2
{
TH1 = mS20H; // 20MS
TL1 = mS20L;
TIME_system_sta++;
Send_speedtime++;
if(TIME_system_sta >= 50) //1S時間定時
{
TIME_system_sta = 0;
TIME_sec++;
SecChgFlag = 1; //秒鐘數(shù)據(jù)更新
if(TIME_sec >= 60)
{
TIME_sec = 0;
TIME_min++;
MinChgFlag = 1; //分鐘數(shù)據(jù)更新
SecChgFlag = 1;
if(TIME_min >= 60)
{
TIME_sec++; // 時間校正
TIME_min=0;
TIME_hour++;
HourChgFlag = 1; //小時數(shù)據(jù)更新
MinChgFlag = 1; //分鐘數(shù)據(jù)更新
SecChgFlag = 1;
if(TIME_hour >= 24)
TIME_hour=0;
}
}
}
}
void send_a_byte(BYTE com,BYTE date)
{
BYTE j;
MPG_CLK = 1;
MPG_DATA = 0;
MPG_STB = 1;
NOP;
MPG_STB = 0;
Sys_Delay(10);
switch(com)
{
case 0x00:
MPG_CLK = 0;
Sys_Delay(2); //35US
MPG_DATA = 0;
MPG_CLK = 1;
Sys_Delay(2); //35US
MPG_CLK = 0;
Sys_Delay(2); //35US
MPG_DATA = 0;
MPG_CLK = 1;
Sys_Delay(2); //35US
MPG_CLK = 0;
Sys_Delay(2); //35US
MPG_DATA = 0;
MPG_CLK = 1;
Sys_Delay(2); //35US
break;
case 0x01:
MPG_CLK = 0;
Sys_Delay(2); //35US
MPG_DATA = 0;
MPG_CLK = 1;
Sys_Delay(2); //35US
MPG_CLK = 0;
Sys_Delay(2); //35US
MPG_DATA = 0;
MPG_CLK = 1;
Sys_Delay(2); //35US
MPG_CLK = 0;
Sys_Delay(2); //35US
MPG_DATA = 1;
MPG_CLK = 1;
Sys_Delay(2); //35US
break;
case 0x02:
MPG_CLK = 0;
Sys_Delay(2); //35US
MPG_DATA = 0;
MPG_CLK = 1;
Sys_Delay(2); //35US
MPG_CLK = 0;
Sys_Delay(2); //35US
MPG_DATA = 1;
MPG_CLK = 1;
Sys_Delay(2); //35US
MPG_CLK = 0;
Sys_Delay(2); //35US
MPG_DATA = 0;
MPG_CLK = 1;
Sys_Delay(2); //35US
break;
}
for(j = 0;j < 8;j++)
{
MPG_CLK = 0;
Sys_Delay(2); //35US
if(date & 0x80)
MPG_DATA = 1;
else
MPG_DATA = 0;
date <<= 1;
MPG_CLK = 1;
Sys_Delay(2); //35US
}
MPG_CLK = 1;
MPG_STB = 1;
}
void main()
{
//中斷函數(shù)初始化。
IE |= 0x80; //EA X ET2 ES ET1 EX1 ET0 EX0允許外部中斷INT0,INT1,開總允許EA。(EA=1;EX0=1,EX1=0)
IP |= 0x08; //x x pt2 ps pt1 px1 pt0 px0設(shè)外部中斷INT1為高優(yōu)先級.(PX1=1)
TCON |= 0x00; //TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 (低電平觸發(fā)INT1,IT1=0)(下降沿觸發(fā)INT0,IT0=1)
//定時函數(shù)初始化
TMOD |= 0x0A; //GATE1 C/T M1 M0 GATE0 C/T M1 M0 ,TO是外中斷0是高電平且定時器0開才有效,TO是自動重裝初值
IE |= 0x82; //允許總中斷和TR0。(EA=1;ET0=1)
TH0 = 0x06; //每次定時250us
TL0 = 0x06;
TR0 = 0; //啟動控制位。
TMOD |= 0x10;
TH1 = mS20H;
TL1 = mS20L;
IP |= 0x08;
IE |= 0x88; //允許總中斷和TR1。(EA=1;ET1=1)
TR1 = 1; //TR1開
MPG_CLK =1;
MPG_DATA =1;
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
mcuTOdvd_SPI.rar
(83.61 KB, 下載次數(shù): 15)
2020-1-3 11:56 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1