當前位置:首頁 » 編程軟體 » 編程鍾

編程鍾

發布時間: 2022-02-11 12:12:37

❶ 急求C++MFC編程時鍾

我發了!

❷ 編程中的時鍾時間是如何得到

簡單的說,有幾種時鍾,可部分參見clock_gettime函數描述。(1)掛鍾,返回的是系統內核裡面的一個變數。這個變數是從主板上的CMOS晶元里讀出的。CMOS晶元是獨立供電的,在電腦斷電後也有小電池供電,就像電子表一樣計時。(2)CPU的計時,是CPU有一個寄存器不斷自動累加,比如2GHz的CPU每0.5ns就+1。(3)可編程時鍾,有低精度的和高精度的兩種,其實都是主板上的晶元,受到CPU的控制。
這個描述非常簡化,系統在其中做了很多事情,其實linux時鍾系統非常復雜,詳情請參閱有關書籍。

❸ plc編程時鍾指令操作數是什麼意思

時鍾指令主要指讀時鍾指令READ
-RTC

寫時鍾指令SET
-RTC
讀時鍾指令的操作數是
VB10
的話,意思就是將讀出的時間放到VB10為起始的8個位元組
即VB10
代表年
VB11

VB12

VB13

VB14

VB15

VB16
空缺
VB17
星期幾
寫時鍾同樣道理!

c語言 allegro庫 中的時鍾怎麼用 求具體的例子~~~

基本的 PC 時鍾只能是每秒觸發 18.2 次, 這對於快節奏的動作游戲不是很適用. Allegro 可以用重新配置過的一個時鍾常式來代替系統原來的,這個重編程過的時鍾有 更高的觸發頻率,但是仍然以以前的速度調用 BIOS 處理程序. 你可以設置幾個你自己 的虛擬時鍾, 每個可以以不同的速度運行, Allegro 將不斷的重編程時鍾使它們在正 確的時間被調用.因為 Allegro 改變了 PIT 始終晶元的設置,它不能和 djgpp 的 libc 里的 uclock() 函數一起使用.

int install_timer();
載入 Allegro 時鍾中斷處理程序. 你必須在載入任何用戶時鍾常式之前,和在顯示 滑鼠,播放 FLI 動畫或者 MIDI 音樂,使用其它的 GUI 常式之前執行它.

void remove_timer();
卸載 Allegro 時鍾處理程序並且將時鍾的控制權交還 BIOS. 你不必明顯的調用它, 因為 allegro_exit() 將為你做這些.

int install_int(void (*proc)(), int speed);
載入用戶始終處理程序, 參數 speed 的單位為萬分之一秒.它和 install_int_ex(proc, MSEC_TO_TIMER(speed)) 作用相同.

int install_int_ex(void (*proc)(), int speed);
在用戶時鍾處理程序列表上加一個函數, 如果這個函數已經被載入,則調整它的速度. speed 的單位為硬體時鍾單位, 即 1193181 分之一秒. 你可以利用以下的宏將其它 時間單位轉換到這個單位上:

SECS_TO_TIMER(secs) - 給出兩次觸發間的秒數
MSEC_TO_TIMER(msec) - 給出兩次觸發間的萬分之一秒數
BPS_TO_TIMER(bps) - 給出每秒觸發多少次
BPM_TO_TIMER(bpm) - 給出每分鍾觸發多少次
如果沒有空間再增加新的用戶時鍾程序, install_int_ex() 將返回一個負值, 否則返回零. 同時只能有 16 個時鍾程序在使用,並且 Allegro 的其它部分 (GUI 代碼, 滑鼠顯示常式, rest(), FLI 播放程序, 和 MIDI 播放程序) 需要載入它們自己的處理程序, 因此你要避免同時使用它過多.

你的函數將被 Allegro 中斷處理程序調用而不是被處理器直接調用, 所以它能夠 按正常的 C 函數來寫而不需要特別的包裝. 然而, 你必須知道,它將在一個中斷中 被調用,而這給你希望在函數中做的事增加了許多約束.它不能使用大數量的堆棧, 不能調用任何 DOS 常式和使用調用了 DOS 常式的 C 庫函數, 而且它必須被很快 的執行.不要在時鍾處理程序里寫太多的復雜代碼: 一個基本的規則是你應該設置 一些標志然後在你的主控制循環里來回應它們.

在象 djgpp 這樣的保護模式環境里, 內存被虛擬化並可以向磁碟交換. 由於 DOS 的不可重入, 如果磁碟交換發生在中斷處理程序內部,系統將痛苦的死機, 所以你 需要確認你鎖住了所有時鍾常式中觸及的所有內存 (包括代碼和數據). Allegro 將鎖住它用的所有東西,但是你有責任鎖住你自己處理程序的. 宏 LOCK_VARIABLE (變數), END_OF_FUNCTION(函數名), 和 LOCK_FUNCTION(函數名) 可以被用來簡化 這項任務.例如, 你想用一個中斷處理程序來增加一個記數變數, 就應該這樣寫:

volatile int counter;

void my_timer_handler()
{
counter++;
}

END_OF_FUNCTION(my_timer_handler);

在你的初始化代碼里,應該鎖住內存:
LOCK_VARIABLE(counter);
LOCK_FUNCTION(my_timer_handler);
很明顯,如果你使用了復雜的數據結構並且在這個處理程序中調用了其它的 函數,這就顯得很笨拙,所以你應該使你的中斷處理程序盡量簡潔.

void remove_int(void (*proc)());
從用戶中斷常式列表中卸載一個函數.在程序的結束處, allegro_exit() 會自動運行它.

extern int i_love_bill;
如果被設為 TRUE, 打開專門的 'windows friendly' (對瘟都死友好) 時鍾模式, 這將硬體時鍾中斷鎖在 200 次每秒的速度,而不是對它動態重編程.這個模式減少 了時鍾的精確性 (例如, rest() 將延時長度誤差在 5 個百萬分之一秒左右), 並且阻止了垂直回掃模擬器的工作 ( 在這個模式下對 timer_simulate_retrace() 的調用被忽略). 然而, 它帶來的好處是, 使得 Allegro 程序可以工作在 windows 3.1 下, 而且使在 win95 的 DOS 模式下運行而沒有出錯信息. 這個標記應該在你載入始終模塊前被設置, 而且在時鍾在激活時不能改變它. 預設狀態下, allegro_init() 如果檢測到 windows 的存在,將打開這個模式.

void timer_simulate_retrace(int enable);
時鍾處理程序可以被用來模擬垂直回掃中斷. 回掃中斷在處理平滑動畫時極其有用, 但不幸的是, VGA 硬體不支持它. EGA 可以,一些 SVGA 卡也可以,但這不夠, 那些方法不夠標准,來使其變的有用. Allegro 使這些運作起來依靠的是對時鍾編程 使其成為一個普通的中斷,當它認為下一次回掃將要發生時在中斷處理程序里輪詢 (polling) VGA 確認處於顯示器刷新時的 sync(垂直回掃同步) 中. 這些在一些情 況下工作的非常好,但是它有一大堆限制:

- 在 SVGA 模式下不要在任何時候都用回掃模擬器. 它只能在某些晶元上用, 而在其它的晶元上不行, 並且它和所有的 VESA 實現程序有沖突. 回掃模擬器 僅僅在 VGA 13h 模式和 mode-X 下可信.

- 回掃模擬器不能工作在 win95 下, 因為 win95 在我試著從 PIT 里讀取逝去的 時間時返回的是一些垃圾.如果有人知道我應該怎麼做這些,請告訴我!

- 回掃模擬器在時鍾處理程序里關掉了中斷造成了許多的等待. 這將使你的整個系 統慢下來, 還可能在用 SB 1.0 音效卡播放聲音時造成無聲 (因為它們不支持自動 初始化 DMA: SB 2.0 及以上版本沒有問題).

由於要忍受這么多的問題, 我強烈建議你不要依賴於回掃模擬器. 如果你在 mode-X 下編程,而且不在乎你的程序能否在 win95 下使用, 它好極了 ,但交給用戶一個可以 關掉它的開關卻是個好主意.

回掃模擬器必須在你在 mode-X 下使用三緩沖函數時打開. 它也可以被用在簡單的 回掃檢測上, 因為輪詢 vsync() 函數在音效卡或時鍾中斷正好發生在回掃的同時時, 偶爾會丟失回掃. 當回掃中斷模擬器打開, vsync() 將檢查 retrace_count (回掃 計數器) 變數而不是輪詢 VGA, 因此只有在它們被其它中斷屏蔽時才會丟失回掃.

extern volatile int retrace_count;
如果回掃模擬器被載入,這個會隨著每次垂直回掃而遞增,否則它將每秒遞增 70 次 (忽略回掃).這提供了一個避開載入用戶時鍾中斷函數的麻煩而控制你的程序速度 的有效方法.

回掃變數的速度依賴於圖形模式. 在 13h 模式 和 200/400 行的 mode-X 解析度 下是每秒 70 次 回掃, 在 240/480 行模式下是 60 次. 它可以被慢到 50 次 (在 376x282 模式下) 也可能高到 92 次 (在 400x300 模式下).

extern void (*retrace_proc)();
如果回掃模擬器被載入, 這個函數將在每次垂直回掃時被調用, 否則將被每秒調用 70 次 (忽略回掃). 將其設置為 NULL 可以關掉回叫. 這個函數必須遵守和中斷函 數相同的規則 (即, 它必須被鎖住, 不能調用 DOS 或 libc 函數) 而且更甚的是: 它必須被 _非常_ 快的執行, 否則回對時鍾同步造成混亂. 我能想到的唯一作用是 用來對調色板做一些巧妙的處理, 而三緩沖能夠用 request_modex_scroll() 函數 來實現, 且 retrace_count 變數可以用來對你的代碼記時. 如果你希望在 retrace_proc 里來改變調色板,則應該使用 inline _set_color() 函數而不是常 規的 set_color() 或 set_palette(), 而且你不要去嘗試在一次回掃中改變二或 三個以上的調色板入口.

void rest(long time);
Allegro 一度接管了時鍾, 基本的 delay() 函數將不能再工作,所以你必須使用這 個常式來代替. 時間的單位是百萬分之一秒.

void rest_callback(long time, void (*callback)())
有點象 rest(), 不過它在等待所需的離開時間的同時將不停的調用指定的函數.

❺ idt可編程時鍾發生器怎麼編程

IDT公司多重市場時序部總經理Kris Rausch介紹說:「這些最新的VersaClock產品在同類性能水平的可編程時鍾發生器中可實現無與倫比的低功耗。VersaClock 6器件使客戶能夠滿足其系統中嚴格的抖動和低功耗要求,同時又可以減少電路板空間和物料成本。憑借其出眾的低相位抖動和低功耗組合,VersaClock 6器件非常適用於高端消費電子、網路、計算、工業和通信等市場要求。」
VersaClock 6可編程時鍾發生器能夠提供通用的輸出對,可獨立配置為LVDS、LVPECL、HCSL或雙LVCMOS,並能夠在每個輸出對上獨立產生1 MHz到350 MHz的任何頻率。本次發布的新器件包括:
· 5P49V6901 可實現任何頻率的四路輸出
· 5P49V6913 可實現任何頻率的兩路輸出
· 5P49V6914 可實現任何頻率的三路輸出
VersaClock 6的高靈活性可使客戶以高性價比的方式得到他們真正所需要的功能,而出色的RMS相位抖動性能滿足高性能應用的要求,相位雜訊性能也符合最新的FPGA規范要求。
VersaClock 6器件採用4×4mm 24-VFQFPN封裝,引腳與VersaClock 5器件兼容,從而可憑借最少的設計改變實現性能擴展。

❻ 單片機編程時鍾 秒針達到60後分針不增加反而清零,從1開始增加,之後一切正常,這是為什麼

代碼我就懶得看了,出現這種問題只需檢查設置分鍾的代碼就行了。

❼ 52單片機可編程時鍾輸出是必須禁止定時器2的中斷的,這句話是什麼意思看不懂你說的

禁不禁止沒關系的,定時器2做可編程成時鍾輸出的時候是不產生中斷的,在作為可編程時鍾輸出的同時也可以用於波特率的產生,兩者頻率相同。
T2CON EQU 0C8H
T2MOD EQU 0C9H
TR2 EQU T2CON.2
RCAP2L EQU 0CAH
RCAP2H EQU 0CBH
TH2 EQU 0CDH
TL2 EQU 0CCH ;在keil裡面要先對定時器2相關的寄存器進行定義。
ORG 0000H
LJMP MAIN
ORG 0100H
MAIN:
MOV TH2,#00H
mov tl2,#00h
mov rcap2l,#00h
mov rcap2h,#00h
mov t2con,#00h
mov t2mod,#02h
setb tr2
ajmp $
END
程序通過實物電路板測試通過的。

❽ 誰知道用C語言led編程時鍾的程序嗎,要求顯示有年,月,日,還有時間的時鍾謝謝

這個程序網上有很多啊

❾ VC++編程時鍾 實踐急需源代碼~

import java.applet.Applet;
import java.util.Date;
import java.util.*;
import javax.swing.*;
import java.awt.Graphics;
import java.util.Calendar;
import java.util.GregorianCalendar;

//通過Runnable介面定義線程類
public class RunnableThread extends JApplet implements Runnable
{
Thread clockThread;
public void start()
{
if (clockThread==null)
{
clockThread=new Thread(this,"Clock");
clockThread.start();
}
}

public void run()
{
while(clockThread!=null)
{
repaint();//實際上是顯示一個時鍾
try
{
clockThread.sleep(1000);
}catch(InterruptedException e) {}
}
}

public void paint(Graphics g)
{
super.paint(g);
Calendar now = GregorianCalendar.getInstance();
g.drawString(now.get(Calendar.HOUR)+":"+now.get(Calendar.MINUTE)+":"+now.get(Calendar.SECOND),5,10);

}

public void stop()
{
clockThread = null;
clockThread=null;
}

}

❿ 可編程時鍾發生器,什麼是可編程時鍾發生器

大約在主板的南橋附近,有一塊母指頭大的黑色晶元,上面寫著那些英文和數字就是了或者直接用軟體everest查看。

熱點內容
微軟怎麼關閉配置更新 發布:2025-01-12 08:34:23 瀏覽:315
wifi的有限的訪問許可權 發布:2025-01-12 08:34:14 瀏覽:608
cftp文件重命名 發布:2025-01-12 08:33:27 瀏覽:880
https的加密演算法 發布:2025-01-12 08:19:15 瀏覽:652
資料庫交 發布:2025-01-12 08:09:06 瀏覽:471
一台剪輯電腦要什麼配置 發布:2025-01-12 07:50:16 瀏覽:11
android與java 發布:2025-01-12 07:50:12 瀏覽:497
列印機手機連接密碼是什麼 發布:2025-01-12 07:48:31 瀏覽:585
冒險島2什麼伺服器 發布:2025-01-12 07:39:22 瀏覽:136
phpcms文件夾許可權 發布:2025-01-12 07:22:06 瀏覽:122