導航:首頁 > 程序命令 > 程序員編輯時鍾代碼

程序員編輯時鍾代碼

發布時間:2022-07-16 14:12:30

① 程序代碼怎麼編寫

編寫需要學習編程語言,例如c語言,java等。

1、有基礎的學員:對於沒有任何編程基礎的初學者來說,要想快速入門編程,最為有效的方式之一就是與專業人士進行交流,在專業人士的指導下進行學習會有比較高的學習效率,而且也會有一個系統的學習過程,當前可以充分利用互聯網來開辟自己的交流渠道。

2、無基礎的學員:對於已經有一定編程基礎的同學來說,邊用邊學往往會有更高的學習效率,比如程序員在學習一門新的編程語言時,如果採用聽課的方式學習也許並不是最高效的。

很多程序員是直接看代碼案例,然後就開始嘗試應用,然後再逐漸提升應用的熟練程度,因為對於已經有成熟編程思想的程序員來說,不同的編程語言僅僅是語法上的不同,思想終歸是統一的。

編程語言難易

編程語言的語法並不難掌握,但是要想熟練運用編程語言,一定要多做實驗,這個過程是無法忽略的,也沒有任何捷徑,編程語言用得多了,自然也就熟練了。對於很多應用級程序員來說,編程並沒有太多需要思考的地方,也不需要設計復雜的演算法

如果要想在程序設計領域走得更遠,熟練運用編程語言僅僅是第一步,還需要有自己的主攻方向,並且能夠圍繞自己的主攻方向不斷深入,掌握相應的研究方法,最終成長為一名研發級程序員。

② 程序員是不是應該每天24個小時不停地敲代碼

程序員的工作是項目經理安排的,不一定是每天都安排,經理可能會說,這個星期你要完成什麼事情,這三天你要完成什麼時候,工作非常具體明確,他不會管你寫多少代碼,他要的是,某某功能什麼時間能完成,如果你速度快,一天完成了一個星期的工作量,那你就可以玩了,當然這種事情幾乎不存在啊

③ 用visual c++ 6.0可視化編程如何編寫電子時鍾

你好

我分長期和短期的學習來分別說一點我的建議

(1)如果你只是想通過短期時間突擊來完成你這個vc6.0電子時鍾的程序,而且當前時間已經不多,並且你又有一些c++的基礎的情況下,我的建議是:
多找一些《《visual c++ 6.0編程實例》》的書,可以在迅雷里下載,也可以去書店找,運氣好的話,可能書裡面就有你做的這個例子,如果實在沒有你的這個例子,那你就要首先想想你這個程序大致需要怎麼做,比如說:首先確定是做個單文檔的模式還是做個對話框的模式;其次是如何添加時鍾的邊框,如何畫出指針;再次如何讓表針轉動等問題,有了這些問題以後,針對這些問題再去那些事例書中找對應的例子,完整的時鍾例子雖然找不到,但是拆分以後的這些小步驟還是能找到的。以上就是針對你現在的基礎我的一點建議。

(2)如果你以後打算從事VC的開發,下面是我的一些心得,希望能給你幫助:

1.首先是學習計算機系統的運行原理。你只有在較為深刻地了解了計算機系統的運行原理,才可能會理解代碼為什麼要這樣寫,理解一些低層的錯誤。在此推薦一本書,《深入了解計算機系統》,迅雷 上有下,它能讓你在程序員的角度上,對計算機有個深刻的了解,很不錯。

2.有了對計算機系統的運行原理的初步認識,下一步可以了解下windows的編程思想,掌握最基本的sdk編程,對於您進一步學vc好處莫大,推薦經典書籍《《window程序設計》》迅雷上也有下
3.孫鑫的《VC++從入門到精通視頻教程》,vc的入門讀物,比較容易理解

4.vc提高篇,推薦《深入解析Windows系統(第四版),深入剖析mfc程序的運行過程。

最後:了解點操作系統的原理對編程也是有好處的。了解一下Windows操作系統的底層原理是怎樣的,虛擬內存是個什麼東西,進程是什麼,等等。

總得說來長期的學習,就是這幾本書:
《深入了解計算機系統》《window程序設計》》《VC++深入詳解》、《Windows環境下32位匯編語言程序設計》、
《Windows核心編程》、《深入解析Windows系統(第四版)》這幾本書,應該是你學習編程的一個有效的過程

恩,好了,最後祝你好運!

④ 求c語言編寫的實現同步網路時間的代碼!就是每次打開程序,就能讓電腦的時間與網路上的時間同步

如果的你的程序沒有管理員許可權是沒法設置系統的時間的。

這個問題,比較好的解決方法是用系統的時鍾同步服務來解決

⑤ 我的老師告訴我一個程序員大部分時間都是在調試代碼,這是真的么

還有維護還是開發了,維護的話改別人的代碼,按別人的思路走,你要知道一個變數裡面到底是啥數據,調試時間很長,自己寫的話,一般會相對短些,但也基本在40%左右,還有要看是語言的區別,比如java和php調試起來話的時間相差很大。

⑥ 如何保存P0口最初讀取到的數值,在後期調取,用以和新的P0口數值做比較,以!=的方式顯示數值出現變動

AT89C52是一個低電壓,高性能CMOS 8位單片機,片內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數據存儲器(RAM),器件採用ATMEL公司的高密度、非易失性存儲技術生產,兼容標准MCS-51指令系統,片內置通用8位中央處理器和Flash存儲單元,AT89C52單片機在電子行業中有著廣泛的應用。
編輯本段主要功能特性
1、兼容MCS51指令系統 2、8k可反復擦寫(大於1000次)Flash ROM; 3、32個雙向I/O口; 4、256x8bit內部RAM; 5、3個16位可編程定時/計數器中斷; 6、時鍾頻率0-24MHz; 7、2個串列中斷,可編程UART串列通道; 8、2個外部中斷源,共8個中斷源; 9、2個讀寫中斷口線,3級加密位; 10、低功耗空閑和掉電模式,軟體設置睡眠和喚醒功能; 11、有PDIP、PQFP、TQFP及PLCC等幾種封裝形式,以適應不同產品的需求。
編輯本段引腳功能及管腳電壓
AT89C52為8 位通用微處理器,採用工業標 PDIP封裝的AT89C52引腳圖
準的C51內核,在內部功能及管腳排布上與通用的8xc52 相同,其主要用於會聚調整時的功能控制。功能包括對會聚主IC 內部寄存器、數據RAM及外部介面等功能部件的初始化,會聚調整控制,會聚測試圖控制,紅外遙控信號IR的接收解碼及與主板CPU通信等。主要管腳有:XTAL1(19 腳)和XTAL2(18 腳)為振盪器輸入輸出埠,外接12MHz 晶振。RST/Vpd(9 腳)為復位輸入埠,外接電阻電容組成的復位電路。VCC(40 腳)和VSS(20 腳)為供電埠,分別接+5V電源的正負端。P0~P3 為可編程通用I/O 腳,其功能用途由軟體定義,在本設計中,P0 埠(32~39 腳)被定義為N1 功能控制埠,分別與N1的相應功能管腳相連接,13 腳定義為IR輸入端,10 腳和11腳定義為I2C匯流排控制埠,分別連接N1的SDAS(18腳)和SCLS(19腳)埠,12 腳、27 腳及28 腳定義為握手信號功能埠,連接主板CPU 的相應功能端,用於當前制式的檢測及會聚調整狀態進入的控制功能。
P0 口
P0 口是一組8 位漏極開路型雙向I/O 口, 也即地址/數據匯流排復用口。作為輸出口用時,每位能吸收電流的 方式驅動8 個TTL邏輯門電路,對埠P0 寫「1」時,可作為高阻抗輸入端用。 在訪問外部數據存儲器或程序存儲器時,這組口線分時轉換地址(低8 位)和數據匯流排復用,在訪問期間激活內部上拉電阻。 在Flash 編程時,P0 口接收指令位元組,而在程序校驗時,輸出指令位元組,校驗時,要求外接上拉電阻。
P1 口
P1 是一個帶內部上拉電阻的8 位雙向I/O 口, P1 的輸出緩沖級可驅動(吸收或輸出電流)4 個TTL 邏輯 門電路。對埠寫「1」,通過內部的上拉電阻把埠拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉 電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。 與AT89C51 不同之處是,P1.0 和P1.1 還可分別作為定時/計數器2 的外部計數輸入(P1.0/T2)和輸入(P1.1/T2EX), 參見表1。 Flash 編程和程序校驗期間,P1 接收低8 位地址。 表.P1.0和P1.1的第二功能 引腳號 功能特性
P1.0 T2,時鍾輸出
P1.1 T2EX(定時/計數器2)

P2 口
P2 是一個帶有內部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級可驅動(吸收或輸出電流)4 個TTL 邏輯 門電路。對埠P2 寫「1」,通過內部的上拉電阻把埠拉到高電平,此時可作輸入口,作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流(IIL)。 在訪問外部程序存儲器或16 位地址的外部數據存儲器(例如執行MOVX @DPTR 指令)時,P2 口送出高8 位地址數據。在訪問8 位地址的外部數據存儲器(如執行MOVX @RI 指令)時,P2 口輸出P2 鎖存器的內容。 Flash 編程或校驗時,P2亦接收高位地址和一些控制信號。
P3 口
P3 口是一組帶有內部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級可驅動(吸收或輸出電流)4 個TTL 邏 輯門電路。對P3 口寫入「1」時,它們被內部上拉電阻拉高並可作為輸入埠。此時,被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。 P3 口除了作為一般的I/O 口線外,更重要的用途是它的第二功能 P3 口還接收一些用於Flash 閃速存儲器編程和程序校驗的控制信號。
RST
復位輸入。當振盪器工作時,RST引腳出現兩個機器周期以上高電平將使單片機復位。
ALE/PROG
當訪問外部程序存儲器或數據存儲器時,ALE(地址鎖存允許)輸出脈沖用於鎖存地址的低8 位字 節。一般情況下,ALE 仍以時鍾振盪頻率的1/6 輸出固定的脈沖信號,因此它可對外輸出時鍾或用於定時目的。要注意的是:每當訪問外部數據存儲器時將跳過一個ALE 脈沖。 對Flash 存儲器編程期間,該引腳還用於輸入編程脈沖(PROG)。 如有必要,可通過對特殊功能寄存器(SFR)區中的8EH 單元的D0 位置位,可禁止ALE 操作。該位置位後,只有一條 MOVX 和MOVC指令才能將ALE 激活。此外,該引腳會被微弱拉高,單片機執行外部程序時,應設置ALE 禁止位無效。
PSEN
程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89C52 由外部程序存儲器取指令(或數 據)時,每個機器周期兩次PSEN 有效,即輸出兩個脈沖。在此期間,當訪問外部數據存儲器,將跳過兩次PSEN信號。
EA/VPP
外部訪問允許。欲使CPU 僅訪問外部程序存儲器(地址為0000H—FFFFH),EA 端必須保持低電平(接 地)。需注意的是:如果加密位LB1 被編程,復位時內部會鎖存EA端狀態。 如EA端為高電平(接Vcc端),CPU 則執行內部程序存儲器中的指令。 Flash 存儲器編程時,該引腳加上+12V 的編程允許電源Vpp,當然這必須是該器件是使用12V 編程電壓Vpp。
XTAL1
振盪器反相放大器的及內部時鍾發生器的輸入端。
XTAL2
振盪器反相放大器的輸出端。
編輯本段特殊功能寄存器
在AT89C52 片內存儲器中,80H-FFH 共128 個單元為特殊功能寄存器(SFE),SFR 的地址空間映象如表2 所示。 並非所有的地址都被定義,從80H—FFH 共128 個位元組只有一部分被定義,還有相當一部分沒有定義。對沒有定義的 單元讀寫將是無效的,讀出的數值將不確定,而寫入的數據也將丟失。 不應將數據「1」寫入未定義的單元,由於這些單元在將來的產品中可能賦予新的功能,在這種情況下,復位後這些單 元數值總是「0」。 AT89C52除了與AT89C51所有的定時/計數器0 和定時/計數器1 外,還增加了一個定時/計數器2。定時/計數器2 的控 制和狀態位位於T2CON(參見表3)T2MOD(參見表4),寄存器對(RCAO2H、RCAP2L)是定時器2 在16 位捕獲方式或16 位 自動重裝載方式下的捕獲/自動重裝載寄存器。
編輯本段數據存儲器
AT89C52 有256 個位元組的內部RAM,80H-FFH 高128 個位元組與特殊功能寄存器(SFR)地址是重疊的,也就是高128 位元組的RAM 和特殊功能寄存器的地址是相同的,但物理上它們是分開的。 當一條指令訪問7FH 以上的內部地址單元時,指令中使用的定址方式是不同的,也即定址方式決定是訪問高128 位元組 RAM 還是訪問特殊功能寄存器。如果指令是直接定址方式則為訪問特殊功能寄存器。 例如,下面的直接定址指令訪問特殊功能寄存器0A0H(即P2 口)地址單元。 MOV 0A0H,#data 間接定址指令訪問高128 位元組RAM,例如,下面的間接定址指令中,R0 的內容為0A0H,則訪問數據位元組地址為0A0H, 而不是P2 口(0A0H)。 MOV @R0,#data 堆棧操作也是間接定址方式,所以,高128 位數據RAM 亦可作為堆棧區使用。 ·定時器0和定時器1: AT89C52的定時器0和定時器1 的工作方式與AT89C51 相同。
編輯本段片上資源
定時器2
基本特性: 定時器2 是一個16 位定時/計數器。它既可當定時器使用,也可作為外部事件計數器使用,其工作方式由特殊功能寄 存器T2CON(如表3)的C/T2 位選擇。定時器2 有三種工作方式:捕獲方式,自動重裝載(向上或向下計數)方式和波 特率發生器方式,工作方式由T2CON 的控制位來選擇。 定時器2 由兩個8 位寄存器TH2 和TL2 組成,在定時器工作方式中,每個機器周期TL2 寄存器的值加1,由於一個機 器周期由12 個振盪時鍾構成,因此,計數速率為振盪頻率的1/12。 在計數工作方式時,當T2 引腳上外部輸入信號產生由1 至0 的下降沿時,寄存器的值加1,在這種工作方式下,每個 機器周期的5SP2 期間,對外部輸入進行采樣。若在第一個機器周期中採到的值為1,而在下一個機器周期中採到的值為0, 則在緊跟著的下一個周期的S3P1 期間寄存器加1。由於識別1 至0 的跳變需要2 個機器周期(24 個振盪周期),因此,最 高計數速率為振盪頻率的1/24。為確保采樣的正確性,要求輸入的電平在變化前至少保持一個完整周期的時間,以保證輸 入信號至少被采樣一次。 捕獲方式: 在捕獲方式下,通過T2CON 控制位EXEN2 來選擇兩種方式。如果EXEN2=0,定時器2 是一個16 位定時器或計數器, 計數溢出時,對T2CON 的溢出標志TF2 置位,同時激活中斷。如果EXEN2=1,定時器2 完成相同的操作,而當T2EX 引 腳外部輸入信號發生1 至0 負跳變時,也出現TH2 和TL2 中的值分別被捕獲到RCAP2H 和RCAP2L 中。另外,T2EX 引 腳信號的跳變使得T2CON 中的EXF2 置位,與TF2 相仿,EXF2 也會激活中斷。捕獲方式如圖4 所示。 自動重裝載(向上或向下計數器)方式: 當定時器2工作於16位自動重裝載方式時,能對其編程為向上或向下計數方式,這個功能可通過特殊功能寄存器T2CON (見表5)的DCEN 位(允許向下計數)來選擇的。復位時,DCEN 位置「0」,定時器2 默認設置為向上計數。當DCEN 置位時,定時器2 既可向上計數也可向下計數,這取決於T2EX 引腳的值,參見圖5,當DCEN=0 時,定時器2 自動設置 為向上計數,在這種方式下,T2CON 中的EXEN2 控制位有兩種選擇,若EXEN2=0,定時器2 為向上計數至0FFFFH 溢 出,置位TF2 激活中斷,同時把16 位計數寄存器RCAP2H 和RCAP2L重裝載,RCAP2H 和RCAP2L 的值可由軟體預置。 若EXEN2=1,定時器2 的16 位重裝載由溢出或外部輸入端T2EX 從1 至0 的下降沿觸發。這個脈沖使EXF2 置位,如果 中斷允許,同樣產生中斷。 定時器2 的中斷入口地址是:002BH ——0032H 。 當DCEN=1 時,允許定時器2 向上或向下計數,如圖6 所示。這種方式下,T2EX 引腳控制計數器方向。T2EX 引腳為邏 輯「1」時,定時器向上計數,當計數0FFFFH 向上溢出時,置位TF2,同時把16 位計數寄存器RCAP2H 和RCAP2L 重裝 載到TH2 和TL2 中。 T2EX 引腳為邏輯「0」時,定時器2 向下計數,當TH2 和TL2 中的數值等於RCAP2H 和RCAP2L 中的值時,計數溢出,置位TF2,同時將0FFFFH 數值重新裝入定時寄存器中。 當定時/計數器2 向上溢出或向下溢出時,置位EXF2 位。 波特率發生器: 當T2CON(表3)中的TCLK 和RCLK 置位時,定時/計數器2 作為波特率發生器使用。如果定時/計數器2 作為發送器或 接收器,其發送和接收的波特率可以是不同的,定時器1 用於其它功能,如圖7 所示。若RCLK 和TCLK 置位,則定時器2 工作於波特率發生器方式。 波特率發生器的方式與自動重裝載方式相仿,在此方式下,TH2 翻轉使定時器2 的寄存器用RCAP2H 和RCAP2L 中的16 位數值重新裝載,該數值由軟體設置。 在方式1 和方式3 中,波特率由定時器2 的溢出速率根據下式確定: 方式1和3的波特率=定時器的溢出率/16 定時器既能工作於定時方式也能工作於計數方式,在大多數的應用中,是工作在定時方式(C/T2=0)。定時器2 作為波 特率發生器時,與作為定時器的操作是不同的,通常作為定時器時,在每個機器周期(1/12 振盪頻率)寄存器的值加1, 而作為波特率發生器使用時,在每個狀態時間(1/2 振盪頻率)寄存器的值加1。波特率的計算公式如下: 方式1和3的波特率=振盪頻率/{32*[65536-(RCP2H,RCP2L)]} 式中(RCAP2H,RCAP2L)是RCAP2H 和RCAP2L中的16 位無符號數。 定時器2 作為波特率發生器使用的電路如圖7 所示。T2CON 中的RCLK 或TCLK=1 時,波特率工作方式才有效。在 波特率發生器工作方式中,TH2 翻轉不能使TF2 置位,故而不產生中斷。但若EXEN2 置位,且T2EX 端產生由1 至0 的 負跳變,則會使EXF2 置位,此時並不能將(RCAP2H,RCAP2L)的內容重新裝入TH2 和TL2 中。所以,當定時器2 作 為波特率發生器使用時,T2EX 可作為附加的外部中斷源來使用。需要注意的是,當定時器2 工作於波特率器時,作為定 時器運行(TR2=1)時,並不能訪問TH2 和TL2。因為此時每個狀態時間定時器都會加1,對其讀寫將互憨忿佳莜簧馮偽輔鐮得到一個不確定的 數值。 然而,對RCAP2 則可讀而不可寫,因為寫入操作將是重新裝載,寫入操作可能令寫和/或重裝載出錯。在訪問定時器2 或RCAP2 寄存器之前,應將定時器關閉(清除TR2)。 可編程時鍾輸出: 定時器2 可通過編程從P1.0 輸出一個占空比為50%的時鍾信號,如圖8 所示。P1.0 引腳除了是一個標準的I/O 口外, 還可以通過編程使其作為定時/計數器2 的外部時鍾輸入和輸出占空比50%的時鍾脈沖。當時鍾振盪頻率為16MHz 時,輸 出時鍾頻率范圍為61Hz—4MHz。 當設置定時/計數器2 為時鍾發生器時,C/T2(T2CON .1)=0,T2OE (T2MOD.1) =1,必須由TR2(T2CON.2)啟 動或停止定時器。時鍾輸出頻率取決於振盪頻率和定時器2 捕獲寄存器(RCAP2H,RCAP2L)的重新裝載值,公式如下: 輸出時鍾頻率=振盪器頻率/{4*[65536-(RCP2H,RCP2L)]} 在時鍾輸出方式下,定時器2 的翻轉不會產生中斷,這個特性與作為波特率發生器使用時相仿。定時器2 作為波特率 發生器使用時,還可作為時鍾發生器使用,但需要注意的是波特率和時鍾輸出頻率不能分開確定,這是因為它們同使用 RCAP2L和RCAP2L。
UART串口
AT89C52的UART 工作方式與AT89C51 工作方式相同。
時鍾振盪器
AT89C52 中有一個用於構成內部振盪器的高增益反相放大器,引腳XTAL1 和XTAL2 分別是該放大器的輸入端和輸出端。 這個放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構成自激振盪器,振盪電路參見圖10。 外接石英晶體(或陶瓷諧振器)及電容C1、C2 接在放大器的反饋迴路中構成並聯振盪電路。對外接電容C1、C2 雖 然沒有十分嚴格的要求,但電容容量的大小會輕微影響振盪頻率的高低、振盪器工作的穩定性、起振的難易程序及溫度穩 定性,如果使用石英晶體,我們推薦電容使用30pF±10pF,而如使用陶瓷諧振器建議選擇40pF±10pF。 用戶也可以採用外部時鍾。採用外部時鍾的電路如圖10 右圖所示。這種情況下,外部時鍾脈沖接到XTAL1 端,即內部 時鍾發生器的輸入端,XTAL2 則懸空。 由於外部時鍾信號是通過一個2 分頻觸發器後作為內部時鍾信號的,所以對外部時鍾信號的占空比沒有特殊要求,但 最小高電平持續時間和最大的低電平持續時間應符合產品技術條件的要求。
編輯本段中斷
AT89C52 共有6 個中斷向量:兩個外中斷(INT0 和INT1),3 個定時器中斷(定時器0、1、2)和串列口中斷。所有 這些中斷源如圖9 所示。 這些中斷源可通過分別設置專用寄存器IE 的置位或清0 來控制每一個中斷的允許或禁止。IE 也有一個總禁止位EA, 它能控制所有中斷的允許或禁止。 注意表5 中的IE.6 為保留位,在AT89C51 中IE.5 也是保留位。程序員不應將「1」寫入這些位,它們是將來AT89 系 列產品作為擴展用的。 定時器2 的中斷是由T2CON 中的TF2 和EXF2 邏輯或產生的,當轉向中斷服務程序時,這些標志位不能被硬體清除, 事實上,服務程序需確定是TF2 或EXF2 產生中斷,而由軟體清除中斷標志位。 定時器0 和定時器1 的標志位TF0 和TF1 在定時器溢出那個機器周期的S5P2 狀態置位,而會在下一個機器周期才查 詢到該中斷標志。然而,定時器2 的標志位TF2 在定時器溢出的那個機器周期的S2P2 狀態置位,並在同一個機器周期內 查詢到該標志。
編輯本段低功耗模式
空閑節電模式
在空閑工作模式狀態, CPU 自身處於睡眠狀態而所有片內的外設仍保持激活狀態,這種方式由軟體產生。此時,同 時將片內RAM 和所有特殊功能寄存器的內容凍結。空閑模式可由任何允許的中斷請求或硬體復位終止。 由硬體復位終止空閑狀態只需兩個機器周期有效復位信號,在此狀態下,片內硬體禁止訪問內部RAM,但可以訪問端 口引腳,當用復位終止空閑方式時,為避免可能對埠產生意外寫入,激活空閑模式的那條指令後一條指令不應是一條對 埠或外部存儲器的寫入指令。
掉電模式
在掉電模式下,振盪器停止工作,進入掉電模式的指令是最後一條被執行的指令,片內RAM 和特殊功能寄存器的內 容在終止掉電模式前被凍結。退出掉電模式的唯一方法是硬體復位,復位後將重新定義全部特殊功能寄存器,但不改變RAM 中的內容,在Vcc恢復到正常工作電平前,復位應無效,且必須保持一定時間以使振盪器重啟動並穩定工作。
編輯本段編程和加密
Flash存儲器的編程
AT89C52單片機內部有8k位元組的Flash PEROM,這個Flash 存儲陣列出廠時已處於擦除狀態(即所有存儲單元的內容 均為FFH),用戶隨時可對其進行編程。編程介面可接收高電壓(+12V)或低電壓(Vcc)的允許編程信號。低電壓編程模 式適合於用戶在線編程系統,而高電壓編程模式可與通用EPROM 編程器兼容。 AT89C52 單片機中,有些屬於低電壓編程方式,而有些則是高電壓編程方式,用戶可從晶元上的型號和讀取晶元內的 簽名位元組獲得該信息。 AT89C52 的程序存儲器陣列是採用位元組寫入方式編程的,每次寫入一個位元組,要對整個晶元內的PEROM 程序存儲器 寫入一個非空位元組,必須使用片擦除的方式將整個存儲器的內容清除。
編程方法
編程前,須按表9 和圖11 所示設置好地址、數據及控制信號, AT89C52 編程方法如下: 1. 在地址線上加上要編程單元的地址信號。 2. 在數據線上加上要寫入的數據位元組。 3. 激活相應的控制信號。 4. 在高電壓編程方式時,將EA/Vpp 端加上+12V 編程電壓。 5. 每對Flash 存儲陣列寫入一個位元組或每寫入一個程序加密位,加上一個ALE/PROG 編程脈沖。每個位元組寫入周期 是自身定時的,通常約為1.5ms。重復1—5 步驟,改變編程單元的地址和寫入的數據,直到全部文件編程結束。
程序存儲器的加密
AT89C52 有3 個程序加密位,可對晶元上的3 個加密位LB1、LB2、LB3 進行編程(P)或不編程(U)來得到。 當加密位LB1 被編程時,在復位期間,EA 端的邏輯電平被采樣並鎖存,如果單片機上電後一直沒有復位,則鎖存起的 初始值是一個隨機數,且這個隨機數會一直保存到真正復位為止。為使單片機能正常工作,被鎖存的EA 電平值必須與該引 腳當前的邏輯電平一致。此外,加密位只能通過整片擦除的方法清除。
數據查詢
AT89C52 單片機用Data Palling 表示一個寫周期結束為特徵,在一個寫周期中,如需讀取最後寫入的一個位元組,則讀出的數據的最高位(P0.7)是原來寫入位元組最高位的反碼。寫周期完成後,所輸出的數據是有效的數據,即可進入下一個位元組的寫周期,寫周期開始後,Data Palling 可能隨時有效。 Ready/Busy:位元組編程的進度可通過「RDY/BSY 輸出信號監測,編程期間,ALE 變為高電平「H」後,P3.4(RDY/BSY)端電平被拉低,表示正在編程狀態(忙狀態)。編程完成後,P3.4 變為高電平表示准備就緒狀態。 程序校驗:如果加密位LB1、LB2 沒有進行編程,則代碼數據可通過地址和數據線讀回原編寫的數據,採用如圖12的電路。加密位不可直接校驗,加密位的校驗可通過對存儲器的校驗和寫入狀態來驗證。 晶元擦除:利用控制信號的正確組合(表6)並保持ALE/PROG 引腳10mS 的低電平脈沖寬度即可將PEROM 陣列(4k位元組)和三個加密位整片擦除,代碼陣列在片擦除操作中將任何非空單元寫入「1」,這步驟需再編程之前進行。 讀片內簽名位元組:AT89C52 單片機內有3 個簽名位元組,地址為030H、031H 和032H。用於聲明該器件的廠商、型號和編程電壓。讀AT89C52 簽名位元組需將P3.6 和P3.7 置邏輯低電平,讀簽名位元組的過程和單元030H、031H 及032H 的正常校驗相仿,只返回值意義如下: (030H)=1EH 聲明產品由ATMEL公司製造。 (031H)=52H 聲明為AT89C52 單片機。 (032H)=FFH 聲明為12V 編程電壓。 (032H)=05H 聲明為5V 編程電壓。
我是單片機入門者,可以說是一片空白,請大哥大姐們幫幫忙,最好有數據流程(字面的也沒關系)。謝謝哦

⑦ 程序員如何方便的管理自己以前寫的代碼

一、代碼的最大長度。
雖然在Java的編譯器中對於代碼的最大長度沒有硬性的規定。但是如果代碼的長度太長,超過了編譯器的最當行寬,顯然閱讀起來比較麻煩。為此根據筆者的經驗,通常情況下Java源代碼的行長度不應該大於80個字元。如果超過這個長度的話,在一些開發工具和編輯器上就無法很好的顯示。如需要通過滾動條來顯示後面部分的代碼。當其他項目成員閱讀這超長的代碼時,就會看得眼花繚亂。當人的溫飽問題解決了之後,就需要開始注意美觀方面的問題。所以程序開發人員在開發應用程序的時候,要盡量避免書寫長的代碼。如果代碼的每行長度確實需要超過80個字元的話(最好將每行代碼的長度控制在70個字元左右),那麼就需要對代碼進行分行。
二、在恰當的地方對代碼進行分行。
筆者建議將Java源代碼每行的長度控制在70個字元、最大不超過80個字元。當超過這個字元長度的時候,開發人員就需要考慮在恰當的地方對他們進行分行處理。不過這個分行也不是說開發人員想在哪裡進行分行就在哪裡進行分行。這個分行是有一定技巧的。雖然這些技巧大部分並不是強制性的規定,但是都是一些專家們的經驗總結,可以提高代碼的閱讀性。為此筆者希望各位程序開發能夠嚴格的遵守。
技巧一:高層折行優於低層折行。
這個技巧是說,在考慮對代碼進行折行處理的時候,需要注意代碼的層次性。如某段代碼涉及到混合四則運算,而四則運算又有明顯的運算順序,此時對代碼進行折行時就最好能夠在四則運算的關鍵順序上進行折行處理。如現在有如下的一段代碼:
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5
如果要對這段代碼進行折行的話,該在哪個地方加入一個折行符號呢?如果是筆者處理的話,筆者會按如下的格式對代碼進行折行處理。
Mynum=mynum1*(mynum1+mynue2+mynum3-mynum4)+8*mynum5
這主要是根據四則運算的運算層次來進行折行的。顯然,*符號的優先順序要比+符號要高。所以在+號前面對其進行折行處理,那麼就可以一目瞭然的反應出代碼的運算層次。可以大幅度的提高代碼的閱讀性。所以代碼折行的第一個技巧就是高層折行優於低層折行。如此的話,可以使得應用程序的結構代碼更加的清晰,更容易被團隊成員所理解。
技巧二:在運算符前面進行折行處理。
其實在如上的折行技巧中,還隱藏著一個規則,即在運算符之前進行折行。如上例所示,筆者就是在+號前面進行折行,而不是在+號後面進行折行處理。這主要也是考慮到代碼的可讀性。如上面這個例子中,如果在+號後面進行折行處理的話,則下一行就會給人一種憑空多出來的感覺,顯得代碼很不連貫。跟這個規則類似,如果在折行處理的時候遇到逗號時,那麼最好能夠在逗號後面進行折行。如在一個方法中,需要傳入5個參數。此時如果代碼行比較長,那麼就需要在幾個參數之間進行折行處理。此時最理想的折行位置,就是在某個參數的逗號後面。注意,使在逗號後面進行折行,而不是在逗號前面。因為一個參數一個逗號是匹對的。而如果一個逗號加一個參數,則讓人看起來很不舒服。
技巧三:這行代碼的對起方式。
當不得已對代碼進行折行處理時,下一行的代碼應該與其同等級的代碼行左對齊。如上例所示,在+號前面將某一段四則運算公式進行折行處理的時候,其+號符號已經採取縮進處理。其縮進後的效果就是要與其同等級的代碼行左對齊。如此的話,明眼人一看就知道這段代碼採取過折行處理;而且跟上一行代碼的層次關系。當一段代碼被分割成三行甚至跟更多行數的時候,這個規則會非常的有用。如果能夠嚴格遵守這個規則,即使將代碼分割成多行,看起來也不會覺得那麼混亂。反而給人一種比較有層次的感覺。
另外在採取縮進處理的時候,可以利用Tab鍵來提高縮進處理的效率。因為直接按空格的話,有可能空格字元數量不一致,會讓人覺得層次不起,產生比較大的混亂。一般情況下,當代碼行兩側距離頁邊的距離比較大,看其來不怎麼舒服時,可以在代碼行中通過插入TAB鍵(會在代碼行中連續插入8個字元)來提高代碼的閱讀性,讓代碼的縮進實現統一。
技巧四:為變數尋找一個合適的位置。
在編寫應用程序時,盡量將變數聲明放置在一個代碼塊的開始處,也就是說{}花括弧的開始位置。雖然說可以在需要使用變數的時候再對其進行聲明。但是筆者不同義如此操作。因為如果在的呢感到使用變數的時候再來聲明變數時,會降低代碼的可讀性。同理,也需要避免低層聲明與高層聲明重復,這樣會引起代碼混亂並可能引發程序功能性錯誤。而且這種錯誤在後續的排錯中很難被發現。為此要在應用程序開發的時候就要盡量避免這種錯誤。
在聲明變數的時候,有時候可能代碼很簡單,生命變數的行總共加起來也不會超過十個字元。此時能否把多個變數的聲明寫在同一行呢?從就技術上來說,這是可行的。也就是說,Java編譯器允許將多個變數定義在同一行上。但是從閱讀性上來說,這並不是很好的做法。筆者的建議是,即使變數定義再簡單,或者變數比較多,也最好分行進行變數的聲明。也就是說,一行聲明一個變數。這可以提高代碼的可閱讀性。而且有時候往往需要對變數加一個注釋說明變數的用途,如果以行定義一個變數,添加行注釋也相對簡單許多。
總之,以上的這些折行的規則基本上不會影響到代碼的運行。但是,對於代碼的維護與後續的排錯、升級、二次開發等等具有不可忽視的作用。而且現在基本上應用程序開發式團隊開發,故大家都遵守同樣的代碼編寫規范是非常重要的。筆者在開發一個應用程序的時候,事先都會花一定的時間,跟項目成員強調這些折行的規則。目的只有一個,就是提高代碼的可讀性,便於後續代碼的共享與維護。畢竟後續面對這些代碼的,並不是客戶,而是我們自己。我們程序員在編寫代碼的時候,不能夠搬起石頭砸自己的腳。筆者認為,現在一個合格的程序人員,不僅技術功底上要過得硬,而且還必須要遵守這些無形規則的約束。難怪現在這么多企業在挑選程序開發人員的時候,都會註明良好的編碼規范。現在對於這些無形中的條條框框,項目經理已經開始重視起來。

⑧ 程序員編寫代碼的最佳狀態在一天中的哪個時間段

以我之經驗,早上起來後的三到四個小時最高效

閱讀全文

與程序員編輯時鍾代碼相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:419
個人所得稅java 瀏覽:759
多餘的伺服器滑道還有什麼用 瀏覽:187
pdf劈開合並 瀏覽:24
不能修改的pdf 瀏覽:748
同城公眾源碼 瀏覽:486
一個伺服器2個埠怎麼映射 瀏覽:293
java字元串ascii碼 瀏覽:76
台灣雲伺服器怎麼租伺服器 瀏覽:474
旅遊手機網站源碼 瀏覽:330
android關聯表 瀏覽:943
安卓導航無聲音怎麼維修 瀏覽:331
app怎麼裝視頻 瀏覽:430
安卓系統下的軟體怎麼移到桌面 瀏覽:94
windows拷貝到linux 瀏覽:770
mdr軟體解壓和別人不一樣 瀏覽:901
單片機串列通信有什麼好處 瀏覽:338
游戲開發程序員書籍 瀏覽:859
pdf中圖片修改 瀏覽:286
匯編編譯後 瀏覽:489