這個時鐘程序是我在1993年編的一個小程序,現在貼出來給大家做參考,它執行后駐留內存,到整點時會報時,你可以用 Ctrl-Alt-U 把它從內存中下掉,可以用 Ctrl-Alt-C 變換顏色,用 Ctrl-Alt-O 把報時聲音關掉(如果感到討厭的話),在駐留內存時,用了直接改內存控制塊的方法,所以用 MEM 或 MI 無法在內存中看到它,鍵盤控制用了直接截取 INT 9 的方法。 這個程序雖然很小,編譯后才1K多一點點字節,但是麻雀雖小,五臟俱全,在這個程序中,你可以參考到以下編程方法:如何駐留內存;如何截取中斷向量;如何在硬件層次上應答鍵盤;如何截取組合鍵。 要編譯、連接成*.com文件
上傳時間: 2014-11-22
上傳用戶:woshini123456
在一些應用中,經常要用到雙串口,但是一般單片機只提供一個串口,其實完全可以用普通I/O口模擬一個串口。這里介紹一個用AVR單片機模擬的串口程序.
標簽:
上傳時間: 2014-01-06
上傳用戶:gengxiaochao
一些應用中,經常要用到雙串口,但是一般單片機只提供一個串口,其實完全可以用普通I/O口模擬一個串口。以下的程序是我編寫的模擬串口程序,程序中使用了單片機的定時器0,和INT0中斷。數據的發送和接收由中斷程序自動進行。程序已經過AVR仿真器仿真和實際燒片使用,證明可靠。有一點需要說明的是,此模擬的串口為半雙工方式。 主程序中,單片機將標準串口設置為115200bps,將模擬串口設置為19200bps。單片機將標準串口收到的數據從模擬串口發送出去,將模擬串口接收到的數據從標準串口發送回來。
標簽:
上傳時間: 2015-09-11
上傳用戶:變形金剛
本程序是一個module, 使用這個程序需要先把它編譯出來(這里是把main.c編譯成main.o)。編譯命令如下: gcc -O -c -Wall main.c 使用的時候須用insmod main.o命令加載,不用時用rmmod main.o命令卸載就可以了。此程序還需要Linux2.4 kernel和netfilter的支持,Linux2.4.*內核的標準安裝里有netfilter/iptables
上傳時間: 2014-01-02
上傳用戶:windwolf2000
對PL0原編譯器進行了以下的擴充:1.增加以下保留字else(elsesym), for(forsym),to(tosym),downto(downtosym),return(returnsym),[(lmparen),](rmparen) 2.增加了以下的運算符:+=(eplus),-=(eminus),++(dplus),--(dminus) 取址運算符&(radsym),指向運算符@(padsym) 3.修改單詞:修改不等號#為<> 4.擴充語句:(1)增加了else子句 (2)增加了for語句 5.增加運算:(1).++運算 (2).--運算;(3).+=運算 (4).-=運算;(5).&取址運算; (6).@指向運算; 6.增加類型:(1).增加多維數組a[i1][i2][i3]……[i(n-1)][i(n-2)][in] (2).增加指針類型(任何變量都能存放指針,但不支持指針的指針,如b:=@@a應該改寫為c:=@a,b:=@c) 7.將過程procedure擴展為函數:(1).允許定義過程時在其后加參數(var a, var b,……..,var n) (2)允許通過指針向函數形式參數傳地址;(3)允許返回值;可以用 a:=p(a,b,c….,n) 返回
標簽: downtosym returnsym elsesym downto
上傳時間: 2016-07-02
上傳用戶:saharawalker
單片機最小系統,兩位LED數碼管由串口輸出接兩個164驅動,Lout,Rout為左右聲道輸出,SET, ALT0, ALT1為三個按鍵,也可自己在開始的I/O定義改成你想用的I/O口;12M晶振,若用89C51則只可裝下約14首歌曲,用89C52則可裝下近40曲
上傳時間: 2016-08-29
上傳用戶:rishian
C# ArrayList C++模仿版,只支持最簡單的動態隊列操作,采用雙層鏈表,支持16兆以上個對象的隊列管理。 效率:查找上界O(988+N/976144),插入及刪除上界O(988+N/976144+N*T(create/delete
上傳時間: 2013-12-11
上傳用戶:tianjinfan
verilog的簡要教程 基本邏輯門,例如a n d、o r和n a n d等都內置在語言中。 • 用戶定義原語( U D P)創建的靈活性。用戶定義的原語既可以是組合邏輯原語,也可以 是時序邏輯原語。 • 開關級基本結構模型,例如p m o s 和n m o s等也被內置在語言中。
上傳時間: 2017-05-05
上傳用戶:1583060504
在本課中,我們要用一個按鍵來實現跑馬燈的 10 級調速。這又會涉及到鍵的去抖的問 題。 本課的試驗結果是,每按一次按鍵,跑馬速度就降低一級,共 10 級。 這里我們又增加了一個變量 speedlever,來保存當前的速度檔次。 在按鍵里的處理中,多了當前檔次的延時值的設置。 請看程序: ―――――――――――――――― #define uchar unsigned char //定義一下方便使用 #define uint unsigned int #define ulong unsigned long #include <reg52.h> //包括一個 52 標準內核的頭文件 sbit P10 = P1^0; //頭文件中沒有定義的 IO 就要自己來定義了 sbit P11 = P1^1; sbit P12 = P1^2; sbit P13 = P1^3; sbit K1= P3^2; bit ldelay=0; //長定時溢出標記,預置是 0 uchar speed=10; //設置一個變量保存默認的跑馬燈的移動速度 uchar speedlever=0; //保存當前的速度檔次 char code dx516[3] _at_ 0x003b;//這是為了仿真設置的 //一個按鍵控制的 10 級變速跑馬燈試驗 void main(void) // 主程序 { uchar code ledp[4]={0xfe,0xfd,0xfb,0xf7};//預定的寫入 P1 的值 uchar ledi; //用來指示顯示順序 uint n; RCAP2H =0x10; //賦 T2 的預置值 0x1000,溢出 30 次就是 1 秒鐘 RCAP2L =0x00; TR2=1; //啟動定時器 ET2=1; //打開定時器 2 中斷 EA=1; //打開總中斷 while(1) //主程序循環 { if(ldelay) //發現有時間溢出標記,進入處理 { ldelay=0; //清除標記 P1=ledp[ledi]; //讀出一個值送到 P1 口 ledi++; //指向下一個 if(ledi==4) { ledi=0; //到了最后一個燈就換到第一個 } } if(!K1) //如果讀到 K1 為 0 { for(n=0;n<1000;n++); //等待按鍵穩定 while(!K1); //等待按鍵松開 for(n=0;n<1000;n++); //等待按鍵穩定松開 speedlever++; if(speedlever==10)speedlever=0; speed=speedlever*3; //檔次和延時之間的預算法則,也可以用查表方法,做出 不規則的法則 } } } //定時器 2 中斷 timer2() interrupt 5 { static uchar t; TF2=0; t++; if((t==speed)||(t>30)) //比較一個變化的數值,以實現變化的時間溢出,同時限制了最慢速 度為 1 秒 { t=0; ldelay=1;//每次長時間的溢出,就置一個標記,以便主程序處理 } } ―――――――――――――――――――――― 請打開 lesson11 目錄的工程,編譯,運行,看結果: 按 K1,速度則降低一次,總共 10 個檔次。
上傳時間: 2017-11-06
上傳用戶:szcyclone
鏈式前向星是一種存儲圖的方法。如果你需要一個有序的邊序列,如果排序的話用快拍O(nlogn),而鏈式前向星可以避免這種排序。但是數據規模較小時速度比不上鄰接矩陣。 如果說鄰接表是不好寫但效率好,鄰接矩陣是好寫但效率低的話,前向星。前向星固然好些,但效率并不高。而在優化為鏈式前向星后,效率也得到了較大的提升。雖然說,世界上對鏈式前向星的使用并不是很廣泛,但在不愿意寫復雜的鄰接表的情況下,鏈式前向星也是一個很優秀的數據結構。
標簽: 鏈式前向星
上傳時間: 2020-07-23
上傳用戶: