導航:首頁 > 操作系統 > 單片機如何輸出同步時鍾

單片機如何輸出同步時鍾

發布時間:2024-04-23 14:48:08

Ⅰ 用51單片機實現時鍾功能程序

anEQUP0;

weiEQUP2;

keyBITP3.7;

ORG0000H

AJMPMAIN;絕對轉移指令,2kb范圍(11位)內跳轉LJMP16位64kb范圍內跳轉

;短轉移指令的功能是先使程序計數器PC加1兩次(即:取出指令碼),然後把加2後的地址和rel相加作為目標轉移地址。因此,短轉移指令是一條相對轉移指令,是一條雙位元組雙周期指令

ORG0030H;指明後面的程序從程序存儲器的0030H單元開始存放

DELAY200US:;@11.0592MHz

NOP

NOP

NOP

PUSH30H

PUSH31H

MOV30H,#2

MOV31H,#179

NEXT:

DJNZ31H,NEXT

DJNZ30H,NEXT

POP31H

POP30H

RET

ORG0060H

;DISPLAY子程序

DISPLAY:

PUSHACC;不能寫A,此處ACC代表地址,push後跟地址,代表把地址內的內容壓入棧中

PUSH00H;R0

PUSH06H;R6

PUSH07H;R7

PUSH83H;DPH

PUSH82H;DPL

MOVR6,#01H;位選數據,01指的是緩沖區最低位數據

MOVR7,#08H;循環次數

FLAG:

MOVan,#0x00;消影

MOVA,R6

CPLA;取反

MOVwei,A;位選

MOVA,#disBufDat

ADDA,R7

SUBBA,#0X08

MOVR0,A

MOVA,@R0;讀出要顯示的數據到A

MOVDPTR,#disTab

MOVCA,@A+DPTR;從rom取數據,取出要顯示的數據對應的段碼

MOVan,A;段選

MOVA,R6

RLA

MOVR6,A;更新下一次位選

LCALLDELAY200US

DJNZR7,FLAG

POP82H;DPL

POP83H;DPH

POP07H

POP06H

POP00H

POPACC

RET

ORG0100H

;定時器中斷0初始化

T0_INIT:

MOVTMOD,#0X01

MOVTH0,#0X3C

MOVTL0,#0XB0

SETBEA

SETBTR0

SETBET0

RET

ORG0130H

;T0中斷處理程序

INT_TIMERE0:

PUSHACC

SETBRS0

MOVTH0,#0X3C

MOVTL0,#0XB0

INCR0

MOVA,R0

SUBBA,#0X14

JBCY,SECFLAG

MOVR0,#0x00

INCsec

SECFLAG:

CLRRS0

POPACC

RETI

ORG000BH;定時器/計數器T0入口地址

LJMPINT_TIMERE0;跳轉到定時器/計數器中斷服務程序中去

disTab:DB0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40;0-f,空白,橫杠的段選數據

disBufDatEQU47H;定義顯示緩沖數據變數區,8個

disBufDatHeadEQU40H//單片機上顯示在最左邊

secEQU48H

;主程序

ORG0180H

MAIN:

MOVSP,#0X60;將0x60到0x7f設為堆棧區

LCALLT0_INIT

MOVdisBufDatHead,#0X00

MOVdisBufDatHead+1,#0X00

MOVdisBufDatHead+2,#0X11

MOVdisBufDatHead+3,#0X11

MOVdisBufDatHead+4,#0X11

MOVdisBufDatHead+5,#0X11

MOVdisBufDatHead+6,#0X11

MOVdisBufDatHead+7,#0X11

MOVsec,#0X3A

WHILE:

JBkey,KEYSCAN

MOVsec,0x00

KEYSCAN:

MOVA,sec

SUBBA,#3CH;超過60s歸零

JBCY,CLEAR

MOVsec,#0X00;clr加ram地址無效

CLEAR:

MOVA,sec

MOVB,#0AH

DIVAB;A/B,商存到A中,余數存B中

MOVdisBufDatHead,A

MOVdisBufDatHead+1,B

LCALLDISPLAY

LJMPWHILE;循環

END;

(1)單片機如何輸出同步時鍾擴展閱讀

51機器周期和指令周期

1、機器周期是指單片機完成一個基本操作所花費的時間,一般使用微秒來計量單片機的運行速度,51單片機的一個機器周期包括12個時鍾振盪周期,也就是說如果51單片機採用12MHz晶振,那麼執行一個機器周期就只需要1μs;如果採用的是6MHz的晶振,那麼執行一個機器周期就需要2μs。

2、指令周期是指單片機執行一條指令所需要的時間,一般利用單片機的機器周期來計量指令周期。在51單片機里有單周期指令(執行這條指令只需一個機器周期),雙周期指令(執行這條指令只需要兩個機器周期),四周期指令(執行這條指令需要四個機器周期)。

除了乘、除兩條指令是四周期指令,其餘均為單周期或雙周期指令。也就是說,如果51單片機採用的是12MHz晶振,那麼它執行一條指令一般只需1~2微秒的時間;如果採用的是6MH晶振,執行一條指令一般就需2~4微秒的時間。

Ⅱ 如何讓單片機定時與電腦時間同步

那你的好好設計一下,最好能有時間補償程序,因為單片機在執行指令時需要浪費時間,加上系統延遲等等問題時間不可能非常准確的,只能想辦法進行時間補償或者其他

Ⅲ 關於單片機串口通信時的同步時鍾信號

串口通信時鍾是由單片機的晶振輸入後,內部產生的,每個單片機都有自己的串口控制寄存器,在編程的時候只要對其進行正確的控制就可以設置串口通信的各種工作模式,每個模式會有自己的波特率,即你說的時鍾頻率.波特率一般用9600,串口通信有自己的協議,在單片機教學的課程里都會有,寄存器的編程也可以在單片機的教程里找到,不會太難的
RXD,TXD引腳一般固定,因為其他引腳沒有產生你說的時鍾的內部機制
兩機通信的時候a的RXD接b的TXD,a的TXD接b的RXD

Ⅳ 用單片機設計一個時鍾,可顯示時和分,可以調時間,也要有鬧鍾功能,要有設計的電路圖

其實不用定時中斷也能實現功能:
#include<reg51.h> 主函數
unsigned char tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};定義0-9數組
unsigned int tmp;定義變數
void delay(unsigned int xms)定義延時函數
{unsigned int j,i;
for(i=0;i<xms;i++)
for(j=0;j<100;j++);
}
void disp()定義子函數
{
P1=tmp;
delay(1);
P2=0xff;
tmp=tmp<<1;
}
void main( )
{

unsigned char z,s=00,m=00,h=00;給時鍾初始值
while(1)
{
for(z=0;z<100;z++)
{
tmp=0x01;
P2=tab[h/10];小時顯示

disp();
P2=tab[h%10];

disp();
P2=tab[m/10];分鍾顯示

disp();
P2=tab[m%10];

disp();
P2=tab[s/10];秒顯示

disp();
P2=tab[s%10];

disp();

}
s++;
while(s==60)秒進一位,到60清0
{
m++;
s=00;
}
while(m==60)分鍾進一位,到60清0

{
h++;
m=00;
}
while(h==24)小時進一位,到24清0
{
h=00;
}

}

}

Ⅳ 串列口工作在方式0時,串列數據從單片機哪個口輸入或輸出,時鍾信號從哪個口輸

串列口工作在方式0時輸出,串列口以方式0發送時,數據從RXD端串列輸出,TXD端輸出同步時鍾信號。
串列口定義方式0並置位REN後,啟動以方式0接收時,此時以RXD端為數據輸入端,TXD端輸出同步時鍾信號。

閱讀全文

與單片機如何輸出同步時鍾相關的資料

熱點內容
找人開發app的公司怎麼樣 瀏覽:642
android藍牙發送數據 瀏覽:426
範文瀾中國通史pdf 瀏覽:753
php常用的設計模式 瀏覽:887
安卓手機怎麼一個一個的截圖 瀏覽:977
javajsondate 瀏覽:354
matlab圖像處理演算法 瀏覽:668
安卓如何禁止手機自動降頻 瀏覽:695
一份加密不緊急的上行文 瀏覽:415
伺服器c5是什麼意思 瀏覽:440
基礎程序員證 瀏覽:423
如何防止伺服器被偷油 瀏覽:287
安卓導入存儲聯系人怎麼不見了 瀏覽:101
微信遮圖打賞源碼 瀏覽:171
安卓平板圖片照片徹底刪除了怎麼辦 瀏覽:442
怎樣查看指標源碼 瀏覽:529
貓和老鼠哪個app好玩 瀏覽:716
網易有愛登錄器在哪個文件夾 瀏覽:244
iis6壓縮 瀏覽:140
redisphp擴展mac 瀏覽:199