




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于89s51單片機的無線病房呼叫系統(tǒng)軟件設(shè)計第1章 單片機與 at89s51芯片概述1.1 單片機簡介單片機全稱為單片微型計算機(single chip microcomputer),又稱為微控制器(micro controller unit)或嵌入式控制器(embedded controller)。它是將計算機的基本部件微型化并集成到一塊芯片上的微型計算機,通常片內(nèi)都含有cpu、rom、ram、并行i/o、串行i/o、定時器/計數(shù)器、中斷控制、系統(tǒng)時鐘及系統(tǒng)總線等。隨著技術(shù)的發(fā)展,單片機片內(nèi)集成的功能越來越強大,并朝著片上系統(tǒng)方向發(fā)展。 單片機有著體積小、功耗低、功能強、性能價格比高、易于
2、推廣應(yīng)用等顯著優(yōu)點,在自動化裝置、智能儀器儀表、過程控制、通信、家用電器等許多領(lǐng)域得到日益廣泛的應(yīng)用。1.2 at89s51介紹如圖1-1為at89s51引腳圖圖1-1 at89s51引腳圖at89s51是一個低功耗,高性能cmos 8位單片機,片內(nèi)含4k bytes isp(in-system programmable)的可反復擦寫1000次的flash只讀程序存儲器,器件采用atmel公司的高密度、非易失性存儲技術(shù)制造,兼容標準mcs-51指令系統(tǒng)及80c51引腳結(jié)構(gòu),芯片內(nèi)集成了通用8位中央處理器和isp flash存儲單元,功能強大的微型計算機的at89s51可為許多嵌入式控制應(yīng)用系統(tǒng)
3、提供性價比高的解決方案。 at89s51具有如下特點:40個引腳,4k bytes flash片內(nèi)程序存儲器,128 bytes的隨機存取數(shù)據(jù)存儲器(ram),32個外部雙向輸入/輸出(i/o)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(wdt)電路,片內(nèi)時鐘振蕩器。此外,at89s51設(shè)計和配置了振蕩頻率可為0hz并可通過軟件設(shè)置省電模式??臻e模式下,cpu暫停工作,而ram定時計數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存ram的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復位。同時該芯片還具有pdip、tqfp和plcc等三
4、種封裝形式,以適應(yīng)不同產(chǎn)品的需求。(1)主要功能特性:兼容mcs-51指令系統(tǒng) 4k可反復擦寫(1000次)isp flash rom32個雙向i/o口4.5-5.5v工作電壓2個16位可編程定時/計數(shù)器時鐘頻率0-33mhz全雙工uart串行中斷口線128x8bit內(nèi)部ram2個外部中斷源低功耗空閑和省電模式中斷喚醒省電模式3級加密位看門狗(wdt)電路軟件設(shè)置空閑和省電功能靈活的isp字節(jié)和分頁編程雙數(shù)據(jù)寄存器指針(2)at89s51各引腳功能介紹:引腳如圖1-1所示,以下是各引腳的說明.vcc:at89s51 電源正端輸入,接+5v。 vss:電源地端。xtal1:單芯片系統(tǒng)時鐘的反相放
5、大器輸入端。xtal2:系統(tǒng)時鐘的反向放大器輸出端,一般在設(shè)計上只要在 xtal1 和 xtal2 上接上一只石英振蕩晶體系統(tǒng)就可以動作了,此外可以在兩個引腳與地之間加入一 20pf 的小電容,可以使系統(tǒng)更穩(wěn)定,避免噪聲干擾而死機。reset:at89s51的重置引腳,高電平動作,當要對晶片重置時,只要對此引腳電平提升至高電平并保持兩個機器周期以上的時間,at89s51便能完成系統(tǒng)重置的各項動作,使得內(nèi)部特殊功能寄存器之內(nèi)容均被設(shè)成已知狀態(tài),并且至地址0000h處開始讀入程序代碼而執(zhí)行程序。ea/vpp:ea為英文external access的縮寫,表示存取外部程序代碼之意,低電平動作,也就
6、是說當引腳為低電平后,系統(tǒng)會調(diào)用外部的程序代碼(存于外部eprom中)來執(zhí)行程序。因此在8031及8032中,ea引腳必須接低電平,因為其內(nèi)部無程序存儲器空間。如果是使用 8751 內(nèi)部程序空間時,引腳要接成高電平。此外,在將程序代碼燒錄至8751內(nèi)部eprom時,可以利用此引腳來輸入21v的燒錄高壓(vpp)。ale/prog:ale是英文address latch enable的縮寫,表示地址鎖存器啟用信號。at89s51可以利用這個引腳來觸發(fā)外部的8位鎖存器(如74ls373),將端口0的地址總線(a0a7)鎖進鎖存器中,因為at89s51是以多工的方式送出地址及數(shù)據(jù)。平時在程序執(zhí)行時a
7、le引腳的輸出頻率約是系統(tǒng)工作頻率的1/6,因此可以用來驅(qū)動其他周邊晶片的時基輸入。此外在燒錄8751程序代碼時,此引腳會被當成程序規(guī)劃的特殊功能來使用。psen:此為program store enable的縮寫,其意為程序儲存啟用,當8051被設(shè)成為讀取外部程序代碼工作模式時(ea=0),會送出此信號以便取得程序代碼,通常這支腳是接到eprom的oe腳。at89s51可以利用psen及rd引腳分別啟用存在外部的ram與eprom,使得數(shù)據(jù)存儲器與程序存儲器可以合并在一起而共用64k的定址范圍。port0(p0.0p0.7):端口0是一個8位寬的開路電極(open drain)雙向輸出入端口
8、,共有8個位,p0.0表示位0,p0.1表示位1,依此類推。其他三個i/o端口(p1、p2、p3)則不具有此電路組態(tài),而是內(nèi)部有一提升電路,p0在當作i/o用時可以推動8個ls的ttl負載。如果當ea引腳為低電平時(即取用外部程序代碼或數(shù)據(jù)存儲器),p0就以多工方式提供地址總線(a0a7)及數(shù)據(jù)總線(d0d7)。設(shè)計者必須外加一個鎖存器將端口0送出的地址鎖住成為a0a7,再配合端口2所送出的a8a15合成一個完整的16位地址總線,而定位地址到64k的外部存儲器空間。port2(p2.0p2.7):端口2是具有內(nèi)部提升電路的雙向i/o端口,每一個引腳可以推動4個ls的ttl負載,若將端口2的輸出
9、設(shè)為高電平時,此端口便能當成輸入端口來使用。p2除了當作一般i/o端口使用外,若是在at89s51擴充外接程序存儲器或數(shù)據(jù)存儲器時,也提供地址總線的高字節(jié)a8a15,這個時候p2便不能當作i/o來使用了。port1(p1.0p1.7):端口1也是具有內(nèi)部提升電路的雙向i/o端口,其輸出緩沖器可以推動4個ls ttl負載,同樣地,若將端口1的輸出設(shè)為高電平,便是由此端口來輸入數(shù)據(jù)。如果是使用8052或是8032的話,p1.0又當作定時器2的外部脈沖輸入腳,而p1.1可以有t2ex功能,可以做外部中斷輸入的觸發(fā)引腳。port3(p3.0p3.7):端口3也具有內(nèi)部提升電路的雙向i/o端口,其輸出緩
10、沖器可以推動4個ttl負載,同時還多工具有其他的額外特殊功能,包括串行通信、外部中斷控制、計時計數(shù)控制及外部數(shù)據(jù)存儲器內(nèi)容的讀取或?qū)懭肟刂频裙δ?。其引腳分配如下:p3.0:rxd,串行通信輸入。p3.1:txd,串行通信輸出。p3.2:int0,外部中斷0輸入。p3.3:int1,外部中斷1輸入。p3.4:t0,計時計數(shù)器0輸入。p3.5:t1,計時計數(shù)器1輸入。p3.6:wr:外部數(shù)據(jù)存儲器的寫入信號。p3.7:rd,外部數(shù)據(jù)存儲器的讀取信號。(3)at89s51與at89c51比較:89s51相對于89c51而言:新增加了很多功能,性能有了較大提升,價格基本不變,甚至比89c51更低!is
11、p在線編程功能,這個功能的優(yōu)勢在于改寫單片機存儲器內(nèi)的程序不需要把芯片從工作環(huán)境中剝離。是一個強大易用的功能。最高工作頻率為33mhz,大家都知道89c51的極限工作頻率是24m,就是說s51具有更高工作頻率,從而具有了更快的計算速度。內(nèi)部集成看門狗計時器,不再需要像89c51那樣外接看門狗計時器單元電路。全新的加密算法,這使得對于89s51的解密變?yōu)椴豢赡埽绦虻谋C苄源蟠蠹訌?,這樣就可以有效的保護知識產(chǎn)權(quán)不被侵犯。兼容性方面:向下完全兼容51全部字系列產(chǎn)品。比如8051、89c51等等早期mcs-51兼容產(chǎn)品。也就是說所有教科書、網(wǎng)絡(luò)教程上的程序(不論教科書上采用的單片機是8051還是89
12、c51還是mcs-51等等),在89s51上一樣可以照常運行,這就是所謂的向下兼容。比較結(jié)果:就如同intel的p3向p4升級一樣,雖然都可以跑windows98,不過速度是不同的。從at89c51升級到at89s51 ,也是同理。和s51比起來,c51就要遜色一些,實際應(yīng)用市場方面技術(shù)的進步是永遠向前的。第2章 系統(tǒng)硬件設(shè)計2.1 系統(tǒng)原理框圖如圖2-1所示為系統(tǒng)原理框圖:圖2-1 系統(tǒng)原理框圖2.2硬件模塊設(shè)計該系統(tǒng)主要包括無線發(fā)射模塊,無線接收模塊,指示燈模塊設(shè)計,聲音模塊,顯示模塊五部分組成。2.21 無線發(fā)射模塊編碼發(fā)射模塊主要由pt2262編碼ic和高頻調(diào)制、功率放大電路組成,發(fā)射
13、模塊的a、b、c、d四個按鍵分別代表不同的病床號,按下代表病人呼救。如圖2-1為無線發(fā)射模塊電路圖。圖2-2 無線發(fā)射模塊2.22無線接受模塊解碼接收模塊包括接收頭和解碼芯片pt2272兩部分組成。接收頭將收到的信號輸入pt2272的14腳(din),pt2272再將收到的信號解碼。四個數(shù)據(jù)輸出口接到四個i/o口,分別接在at89s51單片機最小系統(tǒng)p1口的p1.4-p1.7引腳上。通過不斷的掃描 i/o口是高電平還是低電平來判斷是否有病人呼叫,是通過循環(huán)實現(xiàn)的。同時還需要考慮到一些問題,例如,當有多個病人同時呼叫時,能使互不干擾。如圖2-3為無線接收模塊電路圖:圖2-3 無線接收模塊2.23
14、 指示燈模塊利用發(fā)光二極管實現(xiàn),發(fā)光二極管占用了四個i/o口,分別接在p2口的p3.4-p3.7引上.指示燈連接如圖2-4所示:圖2-4 指示燈連接電路2.23 聲音模塊利用蜂鳴器來實現(xiàn),蜂鳴器報警占用了四個i/o口,分別接在p2口的p2.4-p2.7引腳上蜂鳴器連接如圖2-5所示:圖2-5 蜂鳴器連接電路2.24 led顯示模塊主要由74hc164和數(shù)碼管組成的,通過串口輸入和串口輸出把號碼顯示到數(shù)碼管上。主要實現(xiàn)順序移動,有串行輸入口和串行輸出口,分別接在at89s51芯片的p1.0,p2.0 p1.1,p2.1 p1.2,p2.2 p1.3,p2.3)通過74hc164來實現(xiàn),在程序中主
15、要是用循環(huán)來實現(xiàn)給一個時鐘信號,輸入一個數(shù)據(jù),當有按鍵按下時,數(shù)碼管將顯示出是幾號床位上的病人呼叫,而且一直在顯示,直到有護士發(fā)現(xiàn)。圖2-6為74hc164和數(shù)碼管連接電路:圖2-6 74hc164和數(shù)碼管連接電路第 3章 系統(tǒng)軟件設(shè)計3.1單片機程序設(shè)計的步驟單片機的程序設(shè)計通常包括根據(jù)任務(wù)繪制程序流程圖 編寫程序及匯編等幾個步驟1 繪制流程圖所謂流程圖就是用各種符號,圖形,箭頭把程序的流向及過程用圖形表示出來,繪制流程圖是單片機程序編寫前最重要的工作,通常我們的程序就是根據(jù)流程圖的指向采用適當?shù)闹噶顏砭帉懙?。繪制流程圖時,首先畫出簡單的功能流程圖粗框圖再對功能流程圖進行擴充和具體化,即對存
16、儲器,標志位等單元做具體的分配和說明,把功能圖上的每一個粗框圖轉(zhuǎn)化為具體的存儲器或地址單元從而繪制出詳細的程序流程圖,即細框圖。在單片機的編程過程中繪制流程圖能看清楚程序執(zhí)行的步驟以及程序的流向。事實上,程序的編寫就是根據(jù)流程圖的功能完成的在實際的程序設(shè)計中 根據(jù)框圖采用適當?shù)闹噶罹帉懗鰧崿F(xiàn)流程圖的源程序就是我們編寫程序的最后工作。2編寫程序和匯編程序編寫完之后,我們要把它匯編成機器語言,這種機器語言就是十六進制文件,后綴名為*.hex 文件。以前還要把它轉(zhuǎn)換成二進制文件,后綴名為*.bin 文件,不過現(xiàn)在的編程器都能直接讀入十六進制文件就不需要轉(zhuǎn)換了最后用編程器把程序?qū)懭雴纹瑱C。單片機程序設(shè)
17、計的方法:要想搞清楚程序設(shè)計的方法,我們首先要知道單片機到底有哪幾類程序,單片機的程序分為順序結(jié)構(gòu),分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。在單片機的程序中既有復雜的程序也有簡單的程序,但不論哪種程序,它們都是由一個個基本的程序結(jié)構(gòu)組成的,這些基本結(jié)構(gòu)有順序結(jié)構(gòu),分支結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。1順序結(jié)構(gòu)程序的設(shè)計順序結(jié)構(gòu)的程序一般用來處理比較簡單的算術(shù)或邏輯問題,它的執(zhí)行過程是按照程序存儲器 pc自動加 1 的順序執(zhí)行的,主要用數(shù)據(jù)傳遞類指令和數(shù)據(jù)運算類指令來實現(xiàn)。2分支結(jié)構(gòu)程序的設(shè)計所謂分支結(jié)構(gòu)就是利用條件轉(zhuǎn)移指令使程序執(zhí)行某一指令后,根據(jù)所給的條件是否滿足來改變 程序執(zhí)行的順序,也就是本條指令執(zhí)行完后并不是象順序結(jié)構(gòu)那
18、樣執(zhí)行下一條指令,而是看本條指令所給的條件是否滿足,如果滿足條件就跳轉(zhuǎn)到其他的指令,如果不滿足就順序執(zhí)行。當然也可以是滿足條件順序執(zhí)行而不滿足條件跳轉(zhuǎn)執(zhí)行。在 51 系列單片機中,可以直接用于分支程序的指令有jb jnb jc jnc jz jnz cjne jbc 等這幾條,它們可以完成諸如正負判斷大小判斷和溢出判斷等等。 在分支結(jié)構(gòu)的指令設(shè)計中 大家必須注意,執(zhí)行一條判斷指令只可以形成兩路分支,如果要形成多路分支就必須進行多次判斷 也就是多條指令連續(xù)判斷。3循環(huán)結(jié)構(gòu)程序的設(shè)計循環(huán)程序是最常用的程序結(jié)構(gòu)形式,在單片機的程序設(shè)計中有時要碰到一段程序需要重復執(zhí)行 多次的情況,此時就要用到循環(huán)結(jié)構(gòu)
19、程序。循環(huán)初始化部分主要用來設(shè)置循環(huán)的初始值,包括預值數(shù),計數(shù)器和數(shù)據(jù)指針的初值。循環(huán)處理部分循環(huán)處理部分是程序的主體部分也稱為程序體,通過它可以完成程序處理的任務(wù)。循環(huán)控制部分循環(huán)控制部分可以控制程序循環(huán)的次數(shù)并修改預值數(shù)或計數(shù)器和指針的值,檢查該循環(huán)是否執(zhí) 行了足夠的次數(shù),如果到了足夠的次數(shù)就采用條件轉(zhuǎn)移指令或判斷指令來控制循環(huán)的結(jié)束。循環(huán)結(jié)束部分循環(huán)結(jié)束后必須返回 一般用 ret 或 reti 指令,在循環(huán)程序設(shè)計中,循環(huán)控制部分是程序設(shè)計的關(guān)鍵環(huán)節(jié)。常用的循環(huán)控制方式有計數(shù)器控制和條件控制兩種,計數(shù)器控制就是把要循環(huán)的次數(shù)即預值數(shù)放入計數(shù)器中,程序每循環(huán)一次計數(shù)器的值就減 1 ,一直到
20、計數(shù)器的內(nèi)容為零時,循環(huán)結(jié)束 一般用 djnz 指令而條件控制方式常預先不知道要循環(huán)的次數(shù)。只知道循環(huán)的有關(guān)條件此時就可以根據(jù)給定的條件標志位來判斷程序是否繼續(xù) ,一 般參照分支結(jié)構(gòu)方法中的條件來判別指令并執(zhí)行。子程序的設(shè)計方法調(diào)用子程序的程序我們則叫它主程序loop 的程序段在主程序執(zhí)行時, 每當要用到子程序時 我們就用 lcall 指令來調(diào)用子程序,子程序執(zhí)行完之后,必須返回主程序返回就用 ret 指令。3.2單片機匯編語言介紹程序設(shè)計語言可以分為:符號語言,機器語言,匯編語言,高級語言。符號語言己經(jīng)具有很多優(yōu)點,但符號語言中的每一個符號(這里稱作助記符)可以是用戶根據(jù)辨認或者記憶的需要自
21、己來決定的。這樣,通用性不是很強。就是說,按某一個人的想法編寫的符號語言程序,另外一個人是無法看懂的。匯編語言克服了上述的缺點,它是在符號語言的基礎(chǔ)上發(fā)展起來的。它是針對一類(甚至幾類)計算機,抽象出來的一種符號語言并把這些符號加以統(tǒng)一規(guī)定,使得使用同類計算機的人都了解這些符號的意義,這樣,使得用匯編語言編寫的程序可以在這一類型的任何一臺計算機上使用。這就有了極大的靈活性,當然不同類型的計算機的匯編語言也不同。它們都必須由生產(chǎn)廠家提供的匯編語言來編寫。另外匯編語言還增加了宏指令的功能。讓我們比較一下匯編語言和高級語言的特點。首先,匯編語言與處理器關(guān)系密切。每種處理器都有自己的指令系統(tǒng),相應(yīng)的匯
22、編語言也各自不同。因而匯編語言程序的通用性、可移植性較差。而高級語言與具體計算機無關(guān),高級語言程序可以在多種計算機上編譯啟執(zhí)行。其次,匯編語言編程涉及寄存器、內(nèi)存等硬件細節(jié),程序繁瑣,調(diào)試也比較困難而高級語言采用類似自然語言的語法,容易被掌握和使用,也不必關(guān)心諸如標志、堆棧等。但是,匯編語言本質(zhì)上就是機器語言,它可以直接有效地控制計算機硬件,因而可以產(chǎn)生運行速度快、指令序列短的高效率目標程序。而高級語言不易直接控制計算機的各種操作,編譯程序產(chǎn)生的目標程序龐大、程序難以優(yōu)化、運行速度慢.總的來說,匯編語言的主要優(yōu)點就是可以直接控制計算機硬件,可以編寫在時間和空間兩方面更有效的程序。這些優(yōu)點使得匯
23、編語言在程序設(shè)計中占有重要的地位。是不可取代的。但匯編語言的缺點也是明顯的,它與處理器密切相關(guān),要求程序員熟悉計算機硬件系統(tǒng),考慮許多細節(jié)問題,所以程序繁瑣,調(diào)試、維護、交流和移植困難。因此,有時可以采用高級語言和匯編語言混合編程的方法,互相取長補短,更好地解決實際問題。匯編語言生要應(yīng)用場合有以下幾種:l.程序要具有較短的運行時問,或者只能占用較小的存儲客量。例如操作系統(tǒng)的核心 程序段,實時控制系統(tǒng)的軟件等。2.程序與計算機硬件密切相關(guān),程序要直接控制硬件。例如to接口電路的初始化程序段,外部設(shè)備的底層驅(qū)動程序等63.大型軟件需要提高性能、優(yōu)化處理的部分。例如計算機系統(tǒng)頻繁調(diào)用的子程序、動態(tài)鏈
24、接庫等。4.沒有適合的高級語言的時候。例如開發(fā)最新的處理器程序時。3.3 系統(tǒng)軟件框圖及程序設(shè)計圖3-1 系統(tǒng)軟件框圖通過不斷地循環(huán)掃描按鍵,檢查是否有病人呼叫。3.31 初始化程序主程序初始化,并使數(shù)碼管全顯示0 。begin:mov tmod,#10h;設(shè)置定時器為定時器1方式1mov th1,#3ch;定時50msmov tl1,#0b0hsetb et1;開定時器1中斷setb tr1;定時開始clr bc1clr bc2clr bc3clr bc4clr flag1;清除4個標志位clr flag2clr flag3clr flag4mov dptr,#tab;送表首地址mov a,
25、#0fch; 0串口代碼mov r1,#9;串口得送9次a1:clr txd3;下面為串口送數(shù)過程rrc a;帶進位右移setb txd3mov rxd3,clcall yanshi;833us小段延時djnz r1,a1mov a,#0fchmov r1,#9a2:clr txd4rrc asetb txd4mov rxd4,clcall yanshi;833usdjnz r1,a2mov a,#0fchmov r1,#9a3:clr txd1rrc asetb txd1mov rxd1,clcall yanshi;833usdjnz r1,a3mov a,#0fchmov r1,#9a4:
26、clr txd2rrc asetb txd2mov rxd2,clcall yanshi;833usdjnz r1,a43.32 鍵掃描程序設(shè)計通過不斷的掃描按鍵所接的 i/o口是高電平還是低電平來判斷是否有病人呼叫,是通過循環(huán)實現(xiàn)的。同時還需要考慮到一些問題,例如,當有多個病人同時呼叫時,怎樣能使互不干擾,這時是通過一個標志位來控制的。3.33 指示燈控制程序設(shè)計當有病人按鍵呼叫時,指示燈閃爍報警,用一條指令clr3.4即可實現(xiàn),并用延時程序控制燈的閃爍時間。3.34 報警程序設(shè)計如果有病人呼叫,即有按鍵按下,那么相應(yīng)的蜂鳴器所接的i/o口也設(shè)置為高電平,而且每一個蜂鳴器發(fā)出的聲音是不一樣的
27、。在程序中只用一條語句即可實現(xiàn):clr p2.4,因為在本電路設(shè)計時,每個引腳都是低電平有效的,所以在清零時蜂鳴器才能發(fā)出聲音。3.35 顯示程序設(shè)計當有按鍵按下時,就會調(diào)用顯示子程序,在電路圖中使用的是:串行方式,假如現(xiàn)在是2號床位上的病人呼叫,則在數(shù)碼管上應(yīng)顯示“2”,串行方式中,數(shù)碼管上顯示的數(shù)字是先成二進制數(shù),再一位一位地輸進去的,然后才顯示數(shù)字。這里是在模擬串口,因為該單片機中只有一個串口,而這里要用多個串口。當這段程序執(zhí)行完以后,再進入循環(huán)。十進制數(shù)與相應(yīng)二進制數(shù)的轉(zhuǎn)換表如表3-1所示。表3-1 轉(zhuǎn)換表顯示數(shù)值dop g f e d c b a 驅(qū)動代碼(16進制)01 1 1 1
28、 1 1 0 00fch1 0 1 1 0 0 0 0 060h2 1 1 0 1 1 0 1 00dah3 1 1 1 1 0 0 1 00f2h4 0 1 1 0 0 1 1 066h5 1 0 1 1 0 1 1 0b6h顯示子程序如下所示:start:clr c;病床數(shù)碼管顯示mov dptr,#tabmov a,r0movc a,a+dptrmov r1,#9s1: cjne r0,#1,s2sjmp ss1s2: cjne r0,#2,s3sjmp ss2s3: cjne r0,#3,s4sjmp ss3s4: cjne r0,#4,s1ljmp ss4fh1: ljmp begi
29、nss1:lcall ys10msjb p1.4,fh1sss1:clr txd3rrc asetb txd3mov rxd3,clcall yanshi;833usdjnz r1,sss1clr p2.4clr p3.4ws1:mov a,r7add a,#200mov 31h,asetb bc1setb flag1ljmp tt2fh2:ljmp beginss2:lcall ys10msjb p1.5,fh2sss2:clr txd4rrc asetb txd4mov rxd4,clcall yanshi;833usdjnz r1,sss2clr p2.5clr p3.5ws2:mov
30、a,r7add a,#200mov 32h,asetb bc2setb flag2ljmp tt3fh3:ljmp beginss3:lcall ys10msjb p1.6,fh3sss3:clr txd1rrc asetb txd1mov rxd1,clcall yanshi;833usdjnz r1,sss3clr p2.6clr p3.6ws3:mov a,r7add a,#200mov 33h,asetb bc3setb flag3ljmp tt4fh4:ljmp beginss4:lcall ys10msjb p1.7,fh4sss4:clr txd2rrc asetb txd2mo
31、v rxd2,clcall yanshi;833usdjnz r1,sss4clr p2.7clr p3.7ws4:mov a,r7add a,#200mov 34h,asetb bc4setb flag4ljmp tt1tti1:ljmp ttt13.36 延時設(shè)定中斷允許控制寄存器中斷的允許或禁止是由片內(nèi)可進行位(什么是位,大家可別到現(xiàn)在還說不知道哦)尋址的 8位中斷允許寄存器 ie 來控制的,單片機中斷系統(tǒng)中有兩種不同類型的中斷:一種稱為非屏蔽中斷;另一種稱為屏蔽中斷。對于非屏蔽中斷,用戶不能用軟件方法加以禁止,一旦有中斷申請,cpu 將根據(jù)自然優(yōu)先級予以響應(yīng)。這里主要講屏蔽中斷,對于屏
32、蔽中斷,我們可以通過軟件的方法來予以控制(允許中斷我們把它稱為中斷開放,不允許中斷我們把它稱之為中斷屏蔽),如何操作,說穿了其實很簡單,就是通過對 ie 的相應(yīng)位的置“1”或請“0”來允許或禁止某個中斷,ie 地址( a8h )可位尋址ea : 總控位, ea=0 時關(guān)所有中斷。 ea=1 時所有中斷請求均被開放。es : 串行口, es=1 時開, es=0 時關(guān)串行中斷et1 、 et0 定時計數(shù) 1 時開 0 時關(guān) ex1 、 ex0 外部中斷 1 時開 0 時關(guān)。 方式寄存器tmod方式寄存器tmod是一個逐位定義的8位寄存器,但只能使用字節(jié)尋址的寄存器,字節(jié)地址為89h。其格式如圖3
33、-1:圖3-1 寄存器tmod格式gate門控制。 gate=1時,由外部中斷引腳int0、int1和控制寄存器的tr0,tr1來啟動定時器。 當int0引腳為高電平時tr0置位,啟動定時器t0; 當int1引腳為高電平時tr1置位,啟動定時器t1。 gate=0時,僅由tr0,tr1置位分別啟動定時器t0、t1。 c/t功能選擇位 置位時選擇計數(shù)功能,清零時選擇定時功能。 m0、m1方式選擇功能 由于有2位,因此有4種工作方式m1m0 工作方式 計數(shù)器模式 tmod(設(shè)置定時器模式) 0 0 方式0 13位計數(shù)器 tmod=0x00 0 1 方式1 16位計數(shù)器 tmod=0x01 1 0
34、方式2 自動重裝8位計數(shù)器 tmod=0x02 1 1 方式3 t0分為2個8位計數(shù)器,t1為波特率發(fā)生器 tmod=0x03定時器/計數(shù)器控制寄存器tcon在特殊功能寄存器中,字節(jié)地址為88h 格式如圖3-2,位地址(由低位到高位)為88h一8fh,由于有位地址,十分便于進行位操作。圖3-2 tcon在特殊功能寄存器格式tcon的作用是控制定時器的啟、停,標志定時器溢出和中斷情況。 tcon的格式如下圖所示。其中,tfl,trl,tf0和tr0位用于定時器計數(shù)器;iel,itl,ie0和it0位用于中斷系統(tǒng)。 各位定義如下: tf1:定時器1溢出標志位。當字時器1計滿溢出時,由硬件使tf1置
35、“1”,并且申請中斷。進入中斷服務(wù)程序后,由硬件自動清“0”,在查詢方式下用軟件清“0”。 tr1:定時器1運行控制位。由軟件清“0”關(guān)閉定時器1。當gate=1,且int1為高電平時,tr1置“1”啟動定時器1;當gate=0,tr1置“1”啟動定時器1。 tf0:定時器0溢出標志。其功能及操作情況同tf1。 tr0:定時器0運行控制位。其功能及操作情況同tr1。 ie1:外部中斷1請求標志。 it1:外部中斷1觸發(fā)方式選擇位。 ie0:外部中斷0請求標志。 it0:外部中斷0觸發(fā)方式選擇位。 tcon中低4位與中斷有關(guān),我們將在下節(jié)課講中斷時再給予講解。由于tcon是可以位尋址的,因而如果
36、只清溢出或啟動定時器工作,可以用位操作命令。例如:執(zhí)行“clr tf0”后則清定時器0的溢出;執(zhí)行“setb tr1”后可啟動定時器1開始工作(當然前面還要設(shè)置方式定)。 定時器/計數(shù)器的初始化 由于定時器/計數(shù)器的功能是由軟件編程確定的,所以一般在使用定時/計數(shù)器前都要對其進行初始化,使其按設(shè)定的功能工作。初始貨的步驟一般如下: 1、確定工作方式(即對tmod賦值); 2、預置定時或計數(shù)的初值(可直接將初值寫入th0、tl0或th1、tl1); 3、根據(jù)需要開放定時器/計數(shù)器的中斷(直接對ie位賦值); 4、啟動定時器/計數(shù)器(若已規(guī)定用軟件啟動,則可把tr0或tr1置“1”;若已規(guī)定由外中
37、斷引腳電平啟動,則需給外引腳步加啟動電平。當實現(xiàn)了啟動要求后,定時器即按規(guī)定的工作方式和初值開始計數(shù)或定時)。定時器工作時必須給計數(shù)器送計數(shù)器初值,這個值是送到th和tl中的。他是以加法記數(shù)的,并能從全1到全0時自動產(chǎn)生溢出中斷請求。因此,我們可以把計數(shù)器記滿為零所需的計數(shù)值設(shè)定為c和計數(shù)初值設(shè)定為tc 可得到如下計算通式:tc=m-c式中,m為計數(shù)器模值,該值和計數(shù)器工作方式有關(guān)。該系統(tǒng)中,選用的是方式1,計數(shù)器的初值為:15536,溢出是為:65536,而晶振為:12hz,根據(jù)公式計算, 計算公式 t=(mtc)t計數(shù) 或t計數(shù)t計數(shù)是單片機時鐘周期的12倍,為定時初值,單片機的主脈沖頻率
38、為12mhz,可得定時時間為:50ms。 相應(yīng)的程序代碼為:(1)begin:mov tmod,#10h ;定時器/計數(shù)器方式控制 mov th1,#3ch mov tl1,#0b0hsetb et1 ;將所指位置1 setb tr1;et1:定時器1(t1)的溢出中斷允許位;tr1:t1的運行控制位,置1表示啟動(2)中斷服務(wù)程序:dsd:mov th1, #3ch mov tl1, #0b0hinc r7 ;r7的值給了a,也是為了保證報警時間的準確性 clr tf0 ;定時器0的溢出中斷標志位 retimcs-51的工作頻率為2-12mhz,我們選用的8031單片機的工作頻率為12mhz
39、。機器周期與主頻有關(guān),機器周期是主頻的12倍,所以一個機器周期的時間為12*(1/12m)=1us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過指令的執(zhí)行條數(shù)來確定1秒的時間。具體的延時程序分析:(1)yanshi:mov r5,#210 ;延時420 us子程序 djnz r5, $ ret(2)ys10ms:mov r3,#20 ;延時10毫秒子程序sgl: mov r4, #250 djnz r4, $ djnz r3, sgl ret每條指令的執(zhí)行時間為:2us。yanshi子程序中,210*2=420,所以延時為420 us。在ys10ms子程序中,是個雙重循環(huán),循環(huán)次數(shù)為:
40、20*250=5000,所以延時時間為:5000*2=10000us,約是:10ms。由于單片機的運行速度很快其他的指令執(zhí)行時間可以忽略不計。第3章 系統(tǒng)測試單片機應(yīng)用系統(tǒng)的調(diào)試包括硬件調(diào)試和軟件調(diào)試,下面分2部分進行討論4.1 單片機應(yīng)用系統(tǒng)的硬件調(diào)試單片機應(yīng)用系統(tǒng)的硬件調(diào)試主要是排查印刷電路板的問題和連接上的一些問題。由干硬件電路變化很多,不同類型的電路可能出現(xiàn)的問題也不一樣,所以沒有固定的程序可以投用,所以,在該系統(tǒng)中,首先通過了仔細地推敲系統(tǒng)原理,確認無誤;其次對照設(shè)計圖紙查印制電路板,看是否有粘接等工藝現(xiàn)象;最后,檢查外圍連接是否有誤,通過這幾個方面的反復調(diào)試,可確保電路板的無誤性。
41、在本系統(tǒng)的硬件調(diào)試過程中,出現(xiàn)了電壓不穩(wěn)定而導致程序無法寫入的情況,使電壓穩(wěn)定的方法是改用新的電池,或者是再次設(shè)計電源方案,在這里是用電源接通教學實驗板,然后再把教學實驗板與本系統(tǒng)相連接,這樣,就可以得到穩(wěn)定的電壓了。4.2軟件調(diào)試4.21 lca51軟件簡介lca51軟件是集編輯、編譯/連接、加載、調(diào)試等為一體的集成開發(fā)環(huán)境(ide)。用可以在同一界面環(huán)境中完成所有任務(wù)。主界面大致如圖4-1所示。圖4-1 lca51軟件主界面編輯窗口lca51提供一個多窗口的源文件編輯器。該編輯器不受文件大小的限制,允許無限的撤銷/重復功能。編輯器全面支持匯編、c51和pl/m51語言的語法加亮著色。用戶可
42、以自定義各種類型文本的顏色和不同語言的關(guān)鍵詞。相應(yīng)的關(guān)鍵詞文件名為asm.kwd、c51.kwd、plm51.kwd。這些文件都保存在lca51安裝目錄下。編輯器還支持書簽,拷貝、剪切、粘貼,全程查找、替換,拖動編輯等功能。工作區(qū)窗口工作區(qū)窗口有兩個頁面窗口。工程頁面窗口以樹型結(jié)構(gòu)顯示工程中的項目文件等內(nèi)容。沒有打開工程時,該頁面窗口為空。資源管理器頁面窗口和win9x中的資源管理器中的左面的窗口相同。輸出窗口輸出窗口顯示用戶編譯連接過程中的輸出信息,用戶雙擊某條編譯出錯信息提示即可直接定位到源文件的對應(yīng)行。觀察窗口觀察窗口中顯示調(diào)試過程中長期觀察的變量項。用戶可以添加、刪除、修改、刷新觀察項
43、。相應(yīng)命令在右鍵菜單中。數(shù)據(jù)窗口數(shù)據(jù)窗口中成批顯示實驗機相應(yīng)存儲區(qū)域的整塊數(shù)據(jù)內(nèi)容。用戶可以察看,修改相應(yīng)地址單元的數(shù)據(jù)。相應(yīng)命令在右鍵菜單中。對話窗口用戶通過對話窗口直接用監(jiān)控命令和實驗機對話。注意:在調(diào)試狀態(tài),當對話窗口變?yōu)椴换顒哟翱跁r,要使實驗機仍在監(jiān)控符提示狀態(tài)下,否則,pc機會和實驗機失去通訊。菜單介紹lca51有許多菜單項,主菜單包含了絕大多數(shù)操作命令。菜單比較容易掌握,用戶可以通過閱讀菜單項,直接掌握每個菜單命令的具體功能。lca51也可以使用熱鍵和工具欄圖標快速完成常用菜單項的功能。在lca51主菜單欄上有11個主菜單,它們分別如下:文件(f) 和文件有關(guān)的操作,如打開、關(guān)閉、
44、打印等文件操作。編輯(e) 包括拷貝、剪切、粘貼、書簽、查找和替換等編輯命令。查看(v) 改變lca51的工作界面顯示。包括工具欄和有關(guān)窗口的顯示等。工程(p) 和工程有關(guān)的操作,如打開、關(guān)閉、保存、設(shè)置等工程操作。編譯(c) 包括編譯和連接等編譯操作。調(diào)試(b) 包括加載目標文件、單步、斷點、全速執(zhí)行等調(diào)試命令。觀察(o) 包括添加觀察變量或?qū)τ^察變量進行修改等命令。設(shè)置(s) 包括aedk實驗機型號、通訊口、單文件編譯器/連接器、環(huán)境參數(shù)等的設(shè)置。工具(t) 包含加載和上傳程序,自定義用戶界面等命令。窗口(w) 選擇或改變當前活動窗口及窗口排列方式。幫助(a) 顯示相應(yīng)幫助文文件和軟件版本
45、信息。4.22 聯(lián)機在線調(diào)試1啟動運行環(huán)境打開試驗機電源,雙擊桌面上的lca51軟件的圖標,運行l(wèi)ca51軟件。第一次啟動lca51需設(shè)置通訊端口。用戶選著“設(shè)置通訊口”菜單項,在彈出的對話框中,選擇相應(yīng)的通信口和通訊波特率。做本實驗時,波特率應(yīng)設(shè)9600。點擊測試串口按鈕,檢查通訊口是否可用。退出lca51時,會自動保存用戶最后一次的設(shè)置。2實驗項目并編譯選取所要做的實驗項目的文件(*.asm),用戶選擇“編譯編譯當前文件“菜單項,將編譯當前活動窗口中的源文件,編譯結(jié)果的信息顯示在輸出窗口中。用戶可以根據(jù)輸出窗口中錯誤信息直接定位到源文件相應(yīng)位置。編譯器將生成源文件的目標代碼,對于單匯編文件
46、,編譯產(chǎn)生的目標代碼可以直接加載調(diào)試,對于高級語言的源文件,編譯結(jié)束還要連接才能產(chǎn)生可加載的目標代碼。3調(diào)試lca51是一個集成開發(fā)環(huán)境,調(diào)試和編輯、編譯都在同一界面下完成。調(diào)試時的界面如圖4-2所示。圖4-2 調(diào)試時的界面在編輯狀態(tài)時,界面右下角的當前狀態(tài)顯示為“編輯”,在調(diào)試狀態(tài)時,仿真機沒有運行程序時,界面右下角的當前狀態(tài)顯示為“停止”,仿真機運行程序時,界面右當前狀態(tài)顯示為“運行”。許多菜單命令只有在調(diào)試狀態(tài)才有效,用戶選擇“調(diào)試加載調(diào)試”菜單項后,將加載當前的工程文件或源文件的目標代碼,加載完畢,就進入調(diào)試狀態(tài).如果用戶想退出調(diào)試狀態(tài),選擇“調(diào)試退出調(diào)試”菜單項。在調(diào)試狀態(tài),最下方的
47、狀態(tài)行顯示當前pc指針等常用的寄存器的值。仿真機運行時左上角的圖標會不停變動,右下角的當前狀態(tài)會顯示為“運行”。當前pc指針行的背景顏色為綠色,有效斷點行背景顏色為紅色,無效斷點行背景顏色為棕色。pc指針行和斷點行相同時,背景顏色為粉紅色。觀察窗口中顯示長期觀察的變量的值在不同時候的取值情況。用戶可以在對話窗口中直接通過監(jiān)控命令和仿真機對話,具體監(jiān)控命令參考相關(guān)仿真機使用手冊。數(shù)據(jù)窗口中顯示整塊數(shù)據(jù)區(qū)的內(nèi)容??焖儆^察窗口顯示當前光標處變量的取值。打開調(diào)試窗口并將目標碼加載到實驗機。然后用戶就可以運用本系統(tǒng)提供的各種工具和方法進行調(diào)試。主要是觀察程序是否正常、有無走飛、各主要參數(shù)中間值是否與設(shè)計
48、吻合。4進行實驗根據(jù)實驗說明和用戶編制的程序,完成連線(最好先關(guān)閉試驗機電源,再進行)。通過調(diào)試軟件加載、運行程序、觀察實驗有關(guān)現(xiàn)象。若現(xiàn)象與設(shè)計不符,則返回第三步,重新進行。單片機應(yīng)用系統(tǒng)的軟件調(diào)試也沒有規(guī)律可循。軟件調(diào)試的主要任務(wù)是排查錯誤。編譯器下調(diào)試程序,有兩種錯誤,一種邏輯錯誤,也就是語法錯誤,是很容易被發(fā)現(xiàn)的,另一種是功能錯誤,是指在沒有語法錯誤的基礎(chǔ)上,由于設(shè)計思想或算法的問題導致不能實現(xiàn)軟件功能的一種錯誤。通過這兩方面錯誤,不斷地調(diào)試,以及對各模塊的調(diào)試,最后組成一個完整的程序。在軟件設(shè)計中用了定時器而的原因是: 中斷一開,定時器就開始計時,當?shù)搅酥袛鄷r間時,就調(diào)用中斷程序,其
49、實定時器的作用和延時程序的作用是一樣的,只不過,定時器有一個好處就是,相等于是兩個cpu在動作,互不干擾,定時器一直在計時,程序也一直在運行;而延時程序是沒有這個作用的,在運行延時程序的同時是不能有其它操作的,延時程序的作用是讓前面的操作徹底運行完。為了避免呼叫時互相干擾,在本系統(tǒng)中使用了標志位flag1-flag4,由標志位和按鍵來控制??偨Y(jié)本系統(tǒng)主要利用了at89s51單片機以及74hc164芯片的串口顯示來實現(xiàn)病房呼叫的,主要包括顯示模塊,鍵盤模塊,聲音模塊,單片機系統(tǒng),接口模塊等幾部分,本文介紹的病房呼叫系統(tǒng)具體是說,醫(yī)院的病房里每個床位邊都裝有一個呼叫按鈕,當病人需要幫助時,按下呼叫
50、按鈕,護士辦公室里呼叫顯示板上相應(yīng)房間號的指示燈亮,然后報警,報警時間為10s(可以變化),值班護士一看就知道哪個房間的病人需要幫助或需要進行搶救。當同時有兩個或多個以上的病人呼叫時,彼此互不干擾。系統(tǒng)的不足之處首先是沒能實現(xiàn)循環(huán)顯示,循環(huán)顯示就是只有一個數(shù)碼管顯示,通過各個病床位的優(yōu)先級的設(shè)置,最先顯示的是優(yōu)先級高的病人的床位號碼;其次就是系統(tǒng)用到的器件的個數(shù)比較多,比如說數(shù)碼管以及蜂鳴器,指示燈都是四個,都比較繁瑣;再次就是沒有實現(xiàn)病人與護士之間的對話功能,如果能夠?qū)崿F(xiàn)這個功能那么將為病人提供更好的服務(wù)。參考文獻1沈紅衛(wèi) .單片機應(yīng)用系統(tǒng)設(shè)計實例與分析m.北京:北京航空航天大學出版社,20
51、032周航慈 .單片機應(yīng)用程序設(shè)計技術(shù)(修訂版) m.北京:北京航空航天大學出版社,20023張為民等. cs-51系列單片機系統(tǒng)及其應(yīng)用m.北京:高等教育出版社,20044林邦杰,陳明 .匯編語言程序設(shè)計m.北京:中國鐵道出版社,20035劉守義 .單片機應(yīng)用技術(shù)m. 西安:西安電子科技大學出版社,20026秦實宏 .單片機原理與應(yīng)用技術(shù)m.北京:中國水利水電出版社,20057盧艷軍 .單片機基本原理及應(yīng)用系統(tǒng)m.北京:機械工業(yè)出版社,20058夏繼強、沈德金 .單片機實驗與實踐指導( 二)m. 北京:北京航空學院出版社,20019張毅剛 .單片機原理及應(yīng)用m. 北京:高等教育出版社,200
52、410雷思孝 .單片機原理及實用技術(shù)m. 西安:西安電子科技大學出版社,200411馮建華、趙亮 .單片機應(yīng)用系統(tǒng)設(shè)計與產(chǎn)品開發(fā)m. 北京:人民郵電出版社,200412肖來勝、馮建蘭、夏術(shù)泉 .單片機技術(shù)實用教程m.武漢:華中科技大學出版社,200413趙曙光,李增烈具有記憶功能的病房呼叫系統(tǒng)j電子科技,1998(2):222514陳新崗,趙陽陽.基于單片機的無線病房呼叫器n. 重慶工學院學報,2008(10):p127-13015 無線遙控模塊應(yīng)用篇j. 電子制作,2008(6) 16stc89c51rc.pdf17nec.mos integrated circuitupd121g.18 d
53、esign of hospital sickroom wireless calling system j.2007(6)致謝本文是在趙潤林老師的精心指導和嚴格要求下完成的,趙老師以其嚴謹求實的治學態(tài)度、高度的敬業(yè)精神、兢兢業(yè)業(yè)、孜孜以求的工作作風和大膽創(chuàng)新的進取精神對我產(chǎn)生重要影響。同時,還特別感謝朱勝利,李強同學還有物理系同學對我的無私幫助,使我得以順利完成論文。通過這次設(shè)計,使我獲得了豐富的理論知識,極大地提高了實踐能力。單片機領(lǐng)域這對我今后進一步學習計算機方面的知識有極大的幫助。在此,我忠心感謝趙潤林老師以及計算機科學與技術(shù)系各位老師的指導和支持。在未來的工作和學習中,我將以更好的成績來回報各位領(lǐng)導和老師。附錄附錄1:元器件清單序號名字型號數(shù)量備注1單片機at89s511雙列直插240腿雙列直插底座1供單
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 采石場承包合同范本及資源保護與利用協(xié)議
- 招生團隊協(xié)議書范本
- 民族風情步行街個人店鋪租賃與文化傳承合同
- 餐飲場地租賃合同范本:包含租賃合同終止及清算條款
- 代理人協(xié)議書范本
- 拆除工程臨時交通疏導合同范本
- 寵物寄養(yǎng)買賣協(xié)議書范本
- 餐飲行業(yè)廚師勞務(wù)派遣與菜品創(chuàng)新合同
- 資產(chǎn)清算拍賣委托代理合同書范本
- 水利設(shè)施拆除工程安全監(jiān)管協(xié)議
- 2025年全國新高考II卷高考全國二卷真題英語試卷(真題+答案)
- 經(jīng)濟法學-001-國開機考復習資料
- 2024年廣東省中考生物+地理試卷(含答案)
- 醫(yī)院感染管理組織架構(gòu)圖
- 5-電氣綠色專篇
- 外國城建史(復習整理)
- 高考語文必備古詩文(含翻譯及賞析)
- 食品中日文加工用語
- 小班化教育課堂教學.ppt
- 等效內(nèi)摩擦角計算表
- 2×1000MW高效清潔燃煤發(fā)電項目建議書寫作模板-
評論
0/150
提交評論