基礎知識
第一節 數 制
常說的計算機,誰都會理解是個人電腦PC.說得準確些,應叫電子數字計算機,以區別另一類電子模擬計算機.為什么叫電子數字計算機呢?這是因為其內部是一個數字信息世界:空間地址是數字化;語言是數字化;信息流動是數字化;運算邏輯判斷即“思維”是數字化;整體管理和控制是數字化;與外部交換信息也是數字化.由于世界上最簡單的數制是二進制數,最適合于具有兩個穩態的電子器件所制成的計算機.二進制還可以衍生出更方便的數制,便于運算和表達.下面講一下數制.
4.1數 制
數制是指計數的規則.
4.1.1 二進制
二進制只有兩個數1和0,其基數是2.計數規則是逢二進一.通過如圖3-1所示的運算可以找出二進制與十進制的關系.權碼, 即該位為1代表的權值.
二 進 制(B) 權碼 十進制(D) 十六進制(H)
1624 823 422 221 120
0 0 0 0 0 0 0
0 0 0 0 1 1 1
0 0 0 1 0 2 2
0 0 0 1 1 3 3
0 0 1 0 0 4 4
0 0 1 0 1 5 5
0 0 1 1 0 6 6
0 0 1 1 1 7 7
0 1 0 0 0 8 8
0 1 0 0 1 9 9
0 1 0 1 0 10 A
0 1 0 1 1 11 B
0 1 1 0 0 12 C
0 1 1 0 1 13 D
0 1 1 1 0 14 E
0 1 1 1 1 15 F
1 0 0 0 0 16 10
1 0 0 0 1 17 11
圖4-1 二進制、十進制及十六進制的對應關系
由圖4-1可以看出4位二進制1111表示的是十進制的15,二進制0000表示的是十進制的0.為防止把二進制1111讀成壹千壹百壹拾壹,可用一個下標B(Binary)表示:1111B=15D,下標D(Decimal)表示十進制,一般不寫.從二進制與十進制的對應關系可以看到如下特點:
權碼 1 1 1 1 B=15
對應權值 1×23+1×22+1×21+1×20 =
對應權值 8 + 4 + 2 + 1 =15(二進制數值)
式中的8、4、2和1稱為權值.1111B中的每個1稱為系數或權碼.4位二進制數可表達十進制數0 ~ 15,共16個數.當十進制數超過15時,則向前進1位,變成0000B.進上去的1表示溢位.16這個十進制數已超出4位二進制的表示范圍.為表達比15大的二進制數,可采用多位二進制.例如,采用8位二進制數:
權碼 1 1 1 1 1 1 1 1 B=
對應權值 1×27+1×26+1×25+1×24+1×23+1×22+1×21+1×20=
對應權值 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 =255(二進制數值)
由上面的式子還可看出一個特點,可幫助我們記憶和心算,即:每一位的權值都比其右邊所有權值的和多1.
計算機中有8位二進制數,再大則要用到16位和32位二進制數.
16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 數位
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 權碼
32 768 16 384 8 192 4 096 2 048 1 024 512 256 128 64 32 16 8 4 2 1 權值
32K 16K 8K 4K 2K 1K 簡稱
高8位 低8位
權碼 1 1 1 1 1 1 1 1 1
權值1×215 1×214 1×213 1×212 1×211 1×210 1×29 1×28 1×27
權值32568 16284 8192 4096 2048 1024 512 256 128
簡稱 32K 16K 8K 4K 2K 1K
為了方便,其中稱1024為1K.對單片機來說常用的4K、8K、16K、32K應當記熟.
當用二進制表示一個較大的數時, 1和0的位數太多,不便于書寫,很不直觀.因此,又引出十六進制(Hexadecimal).十六進制數可用一個下標H表示.
對幾個名詞的說明如下:
位(bit): 二進制數的1位,即1或0.
字節(byte):相鄰的8個二進制位為1個字節.
字長: 每個數所含二進制位的數量叫字長.計算機內的字長都是字節的整數倍.
地址: 由內部存儲器中許多存儲單元組成.將每個單元都順序地統一編號,這個編號就是地址.
4.1.2 十六進制
從圖3-1的最右側一列可見,自9之后就用A、B、C、D、E和F分別表示10、11、12、13、14和15.這樣就可以把沉長的二進制變得簡短了.
例如:
二進制 1 0 1 1 1 1 0 0 0 1 1 1 0 1 0 1
對應十六進制 B C 7 5
即BC75H,以4位二進制為一段,用0~F表示.運算時機器還是按二進制計算.書寫時為防止混淆,作數據用時要標注H或$或0x, 這表示十六進制數.機器在運行時,譯碼器會自動識別出數據或碼制.
在上面兩節中學了二進制數轉換成十進制數的方法.下面介紹把十進制數反過來變成二進制數的余數法:用2去除二進制數,先得的余數為低位,后得的余數為高位,直到商為0為止.
例如:
2 1 1 余數
2 5 ——1最低位
2 2 ——1
2 1 ——0
0 ——1 最高位
即:11=1011B
4.1.3 二進制數的運算
1. 二進制加法規則
二進制的加法規則如下:
(1) 0+0=0
(2) 0+1=1
(3) 1+1=0+進位
(4) 1+1+1=1+進位
例:1110B+1100B=1 1010 B
1 1 1 0 被加數
+ 1 1 0 0 加數
1 進位
——————————
1 1 0 1 0 和
2. 二進制減法規則
二進制的減法規則如下:
(1) 0-0=0
(2) 1-0=1
(3) 1-1=0
(4) 0-1=1-借位
例:10110B-1100B= 1010 B
1 0 1 1 0 被減數
- 1 1 0 0 減數
——————————
1 0 1 0 差
3. 二進制乘法規則
二進制的乘法規則如下:
(1) 0×0=0
(2) 0×1=0
(3) 1×0=0
(4) 1×1=1
例:1101B×1011B= 1000 1111B
1 1 0 1
× 1 0 1 1
———————
1 1 0 1
1 1 0 1
0 0 0 0
1 1 0 1
——————————
1 0 0 0 1 1 1 1
注意:乘2相當于左移1位.例:
1 1 0 1
× 1 0
——————
0 0 0 0
1 1 0 1
——————
1 1 0 1 0
常用將被乘數左移1位的方法來完成乘2運算.
4.二進制除法規則
(不考慮余數)
例:10110101B÷1001B=10100B
1 0 1 0 0
————————
1001 1 0 1 1 0 1 0 1
1 0 0 1
———————
1 0 0 1
1 0 0 1
———————
0 0 1
4.2 計算機的基本運算
計算機有3種基本運算:算術運算、關系運算和邏輯運算.
4.2.1 算術運算
單片機中的運算邏輯單元(ALU)執行加、減、乘、除四則運算.凡函數運算(三角函數、指數、對數運算)都將其化成四則運算.例如,正弦函數求值計算變成多項式的求和計算:
更復雜的運算,例如求解方程式的根,也都要變成四則運算.單片機中就有加減法指令等, 可完成復雜的運算.
4.2.2 關系運算
計算機內所要處理的信息不論是數據還是字都是用0和1表示.關系運算就是比較兩數據是否相同或不相同.若不相同,再區分大小.關系運算包括“大于”、“小于”、“等于”和“不等于”4種.在實際工作中應用很普遍,例如,自動控制中的正轉和反轉,以及機器人運行時判斷是否離開軌跡線,等等.單片機中就有條件轉移指令中的“大于”、“小于”指令等, 可以完成各種判斷處理工作.
4.2.3 邏輯運算
邏輯數據只有兩個值1和0.1表示“真”(True),0表示“假”(False).基本邏輯運算有3種,還可衍生1種,即“與(AND)”、“或(OR)”、“非(NOT)”或“異或(EOR)”.
1.“與”運算
“與”可用兩串聯開關與燈泡、電源串聯電路來說明,見圖3-2.當開關A與B都同時閉合時,燈P才亮.可用邏輯表達式
A·B=P 或 A∧B=P
來表示,說明只有A“與”B都閉合,燈P才亮.“與”運算的真值表如表3-2所列,即有0即0,全1為1.
圖3-2 “與”運算電路示意圖及與門符號
表3-2 “與”運算真值表
輸入A 輸入B 輸出P
0011 0101 0—滅001—亮
2.“或”運算
“或”(OR)可用兩開關A和B并聯后與電源和燈P作如圖3-3的連接來說明,其邏輯關系可用邏輯表達式
A+B=P 或 A∨B=P
來表示.說明A“或”B兩者有一個閉合,燈P就亮.“或”運算的邏輯真值表如表3-3所列,即有1即1,全0為0.
圖3-3 “或”運算電路示意圖及或門符號
表3-3 “或”運算真值表
輸入A 輸入B 輸出P
0011 0101 0111
當編寫程序時,用邏輯“與”、“或”可對數據起屏蔽和摘取作用.例如:從數據1100 1010B中只選取高4位(去掉低4位的值),可用1111 0000 B和1100 1011 B作“與”運算來實現,即
1 1 0 0 1 0 1 1
∨ 1 1 1 1 0 0 0 0
———————— —
1 1 0 0 0 0 0 0
若使某數據的高4位都變成1,又不影響其低4位,則可用1111 0000B與1001B進行“或”運算來實現,即
1 0 0 1 1 0 0 1
∧ 1 1 1 1 0 0 0 0
———————— —
1 1 1 1 1 0 0 1
例如,第6章開關控制燈的例題中用到的SBR指令“SBR R16.$F0”,可用“或”指令“OR R16.$F0”代替.
3.“異或”運算
“異或” (XOR——eXclusive OR)邏輯運算可用圖3-4如示電路來說明.兩個雙位聯動開關串聯之后與燈P和電源并聯.當正面A與B或者反面A與B閉合時,燈P不亮,即同一面都閉合時,燈不亮.若有一面不同時閉合,則燈亮.可用邏輯表達式
來表示.3個表達式等同.“異或”運算的邏輯真值表如表3-4所列.
圖3-4 “異或”運算電路示意圖及電路符號
表3-4 “異或”運算真值表
輸入A 輸入B 輸出P
0011 0101 0110
該邏輯用來進行比較判斷,例如對兩數進行比較.若兩數相同“異或”的結果為零,例如:
1 0 1 1 1 0 0 1
1 0 1 1 1 0 0 1
———————— —
0 0 0 0 0 0 0 0 ——影響
則說明兩數相同.若兩數“異或”的結果不為零,例如:
1 0 1 1 1 0 0 0
1 0 1 1 1 0 0 1
———————— —
0 0 0 0 0 0 0 1
則說明兩數不同.其應用見后指令表EOR指令.
4.“非”運算
“非(NOT)”邏輯運算對應的電路如圖3-5所示.A閉合則燈滅,A斷開則燈亮.“非”運算的邏輯真值表如表3-5所列.
圖3-5 “非”運算電路示意圖及電路符號
表3-5 “非”運算真值表
輸入A 輸出P
10 01
4.3 運算后的狀態
計算機的算術邏輯單元ALU在不停地運算.對每次運算我們不僅要注意數值結果,同時還要根據其運算狀態來決定下面程序流程的走向.運算后的狀態存放在狀態寄存器SREG中.它的8個位被設計者定義為如圖3-6所示的涵意.
圖4-6 運算中影響程序狀態字
對于圖3-6中的8個位,僅要求初學者了解其中的位C、Z、H、I和T.
· 因第7位有進位C=1.
· 若結果為0(即8位全0),則Z=1.
· 若低4位的高位向高4位進位(叫半進位),則H=1.
· 若在機器運行過程中遇有特殊的意外事件發生時允許機器作應急處理,即執行應急程序,則I=1(中斷的概念見后).
· T是留出的1位,為監視所關注的寄存器的某一位而設.
4.4 中斷的慨念
用日常生活中遇到的中斷慨念來說明計算機中的中斷概念.例如,寫字樓的高層有位資深的總編日理萬機.當他寫作的思緒正如潮涌,筆下如神時,突然,洪水訣堤而泄,必須停止眼下的工作,盡快去搶險,這就是中斷.而且他的工作也不是絕對不可停的,即是可允許中斷的.這時就把狀態寄存器SREG的I位置1.但在同樣情況下,一位正在作開顱手術或作心臟手術的大夫就絕不可停止手術,即不可中斷.這時SREG的最高位就應置0.在中斷時應當作什么工作呢?對總編來說,就應當記住工作到計劃的哪一頁,例如第9頁.而且還要把所用的資料、素材和照片有序地放在專用的第5號保險柜第3層第7號文件夾中.要牢記537這個號,待緊急任務完成后,取出537號文件夾,接著從第9頁開始工作.單片機處理中斷與此類似.它是在叫做RAM的存儲器中設置一個空間,作為存放資料的“保險柜”,中斷的地址即“第幾頁”.機器會自動“告訴”程序計數器PC指針,所存放的資料也會自動彈出.
在執行中斷時還會遇到更重要的緊急事件,還得在中斷中嵌套中斷.過程與第1次中斷相同.中斷的處理完全可以在編寫程序時隨心安排.
4.5 定時器/計數器(T/C)
它與我們用的鬧鐘類似.鬧鐘實質是計數器,只不過計量的是標準電秒脈沖信號.把它撥到早6點,當計“數”一到,就響鈴催人起床.
單片機內部資源應有盡有,8515芯片中有一個8位計數器和一個16位計數器.每當輸入一個計數脈沖時,二進制計數器就逢二進一計下去.8位計數器最多可計到255個脈沖,16位計數器可計到65 535個脈沖.用計數器在生產線上作計數用會大顯神通.以裝藥片為例,要求每個大瓶裝入1 000片藥片,當裝滿之后控制機器轉動推走裝滿的瓶子,并跟過來一個空瓶.解決這個問題的思路就同聰明的烏鴉想喝細頸瓶中的剩水一樣,往瓶中銜小石頭,水就被逐漸地擠上來了.
通過計算可知,在計數器中應預置的數為
65 535-1 000=64 535
64 535再變成二進制數或十六進制數,即
64 535=1111 1100 0001 1000B=FC18H
應預置入FC18H,當計滿時即可產生進位信號.用它可以驅動機器轉動,并可將FC18H再次自動預置.
用它來驅動機器轉動.因為計滿數之后16位計數器變成全0,所以在下一次計數時還得預置FC18H.這個常數是自動置入的,見3-7工作示意圖.
圖3-7 計數器自動預置數原理
如果計數電脈沖換成時間間隔十分精密的時間電脈沖,則16位計數器就可以變成計時器了.
4.6 看門狗(Watch Dog)
舉個例子:黑心的業主顧來工人給他干活,在工人反復必經的路上設置了一個紅外傳感電子鬧鐘,用來監視工人.工人緊張工作,大約10分鐘左右經過一次.每經過紅外傳感時,電子鬧鐘就復位一次重新計時.業主就把電子鬧鐘設置11分鐘就響,不讓工人稍緩一口氣,他卻睡大覺去了.一旦鈴響,他就把工人拉回來從頭干活.因此,把這個鬧鐘叫做“看門狗”.
單片機中的看門狗,是為替我們監視程序運行情況而設.我們在編寫程序時,在程序流程中多設些看門狗復位指令.當程序正常運行時,使看門狗這個鬧鐘不斷清0,不會因計滿而“狂叫”.程序一旦受外界干擾而不能正常工作,或陷入死循環,就不能及時使看門狗復位.看門狗就發出復位信號,強行把程序計數器PC值置0,使單片機從頭開始工作.
要注意的是,看門狗有一個在單片機內部獨立的時鐘信號源,其工作頻率為1 MHz,與單片機的外部時鐘源完全無關.
4.7 有關名詞介紹
4.7.1 指令和程序
1. 指 令
它是人對計算機發出的完成一個最基本操作的工作命令.由計算機的硬件來執行.因計算機硬件的結構不同,指令也不同.某一種計算機的基本指令的集合稱為該計算機的指令系統.指令系統中的指令按功能分有:數據傳送、算術邏輯運算、程序控制、輸入/輸出以及控制等功能.指令系統在很大程度上決定了計算機的處理能力,是計算機的重要特征.詳細內容見第5章.
2. 程 序
人們為解決某一問題而寫出的有序的一條條指令稱為程序.設計和書寫程序的過程稱為程序設計.計算機的指令系統是程序設計的基本依據.
指令和程序在計算機中的執行過程如下:計算機執行程序中的每條指令分為兩個階段,第1階段是將要執行的指令從內存(AVR單片機從Flash)中取出CPU;第2階段是CPU對該指令進行分析譯碼,判斷該指令要執行的操作,然后向相關部件發出執行該指令的控制信號,并執行相應的操作.
程序是由一系列指令的集合而構成的.程序的執行就是程序中一條條指令執行的全過程.
4.7.2 關于程序設計語言和語言處理程序
計算機能自動連續地工作,是由程序控制而實現的,程序是用程序設計語言按任務的要求事先編寫的.程序設計語言按發展過程分為:機器語言、匯編語言和高級語言.
1. 機器語言
機器語言是以二進制代碼表示的指令的集合,是計算機惟一能直接識別和執行的語言.
優點:占用內容少,執行速度快.
缺點:它是面向機器的語言,隨機型而異,通用性差,難閱讀,難記憶,難維護,編程工作量大,易出錯.
2. 匯編語言
匯編語言是用助記符來表示機器指令的語言,也稱符號語言.
優點:比機器語言易學、易記.
缺點:通用性差,隨機而異.
由于計算機只能識別和執行機器語言,因此,必須用匯編(形容詞)程序(工具軟件)把用匯編(形容詞)語言編寫的源程序翻譯成機器能識別和執行的二進制碼的目標程序.這個翻譯過程稱為匯編(動詞).(請注意此段匯編詞性的涵意.)
3. 源程序
指用高級語言編寫的程序.
4. 目標程序
指計算機可直接執行的程序,就是以二進制機器碼指令所組成的程序集合.
5. 編 譯
將源程序翻譯成目標程序,再作些必要的處理,這個操作過程稱為“編譯”.
<>單片機學堂<>高手勿進<>
全部回復(12)
正序查看
倒序查看
0000 13 ORG 0000H
0000 0133 14 AJMP START
15
0033 16 ORG 0033H
0033 17 START:
00B3 18 DQ BIT P3.3
00A0 19 RS EQU P2.0
00A1 20 RW EQU P2.1
00A2 21 E EQU P2.2
00A6 22 LED8P EQU P2.6
00A7 23 BLA EQU P2.7
24
0080 25 LCD EQU P0
0001 26 DS18B20 BIT 01H
0002 27 TEMPERRB BIT 02H
0003 28 TEMPSBIT BIT 03H
0030 29 TEMPFH EQU 30H ;溫度符號位
0031 30 TEMPBW EQU 31H ;溫度"百"位
0032 31 TEMPSW EQU 32H ;溫度"十"位
0033 32 TEMPGW EQU 33H ;溫度"個"位
0034 33 TEMPXS1 EQU 34H ;溫度小飾壞?1"位
0035 34 TEMPXS2 EQU 35H ;溫度小飾壞?2"位
0036 35 TEMPXS3 EQU 36H ;溫度小飾壞?3"位
0037 36 TEMPXS4 EQU 37H ;溫度小飾壞?4"?
0038 37 TEMPXSD EQU 38H
0039 38 TEMPZS EQU 39H
003A 39 TEMPXS EQU 3AH
003B 40 TEMPL EQU 3BH
003C 41 TEMPH EQU 3CH
003D 42 ID1 EQU 3DH
003E 43 ID2 EQU 3EH
003F 44 ID3 EQU 3FH
0040 45 ID4 EQU 40H
0041 46 ID5 EQU 41H
0042 47 ID6 EQU 42H
0043 48 ID7 EQU 43H
0044 49 ID8 EQU 44H
0046 50 DLCD1 EQU 46H
0047 51 DLCD2 EQU 47H
0048 52 DLCD3 EQU 48H
0049 53 DLCD4 EQU 49H
004A 54 DLCD5 EQU 4AH
004B 55 DLCD6 EQU 4BH
004C 56 DLCD7 EQU 4CH
004D 57 DLCD8 EQU 4DH
004E 58 DLCD9 EQU 4EH
A51 MACRO ASSEMBLER LCDTEMP 03/08/2007 03:05:53 PAGE 2
004F 59 DLCD10 EQU 4FH
0050 60 DLCD11 EQU 50H
0051 61 DLCD12 EQU 51H
0052 62 DLCD13 EQU 52H
0053 63 DLCD14 EQU 53H
0054 64 DLCD15 EQU 54H
0055 65 DLCD16 EQU 55H
66
67 ;---------------------------------------------------------
68
0033 3133 69 MAIN: ACALL GETTEMP
0035 200102 70 JB DS18B20,MAIN1
0038 0133 71 AJMP MAIN
003A 72 MAIN1:
003A C2A6 73 CLR LED8P ;開啟事牘芟允?
003C D2A7 74 SETB BLA ;關閉液晶模塊背光
003E 120049 75 LCALL DISP
0041 120119 76 LCALL GETROM
0044 120049 77 LCALL DISP
0047 0133 78 AJMP MAIN
79
80
81 ;-------- 事牘芟允咀映絳?-------
0049 300365 82 DISP: JNB TEMPSBIT,ZHWD ;溫度大于0嗎?
004C 7580BF 83 MOV P0,#0BFH ;負號
004F C2A0 84 CLR P2.0
0051 D2A1 85 SETB P2.1
0053 D2A2 86 SETB P2.2
0055 D2A3 87 SETB P2.3
0057 D2A4 88 SETB P2.4
0059 1202B5 89 LCALL YS4722U
90
005C E532 91 MOV A,TEMPSW ;瘴露認允敬?
005E 900298 92 MOV DPTR,#SGTB
0061 93 93 MOVC A,@A+DPTR
0062 F580 94 MOV P0,A
0064 C2A1 95 CLR P2.1
0066 D2A0 96 SETB P2.0
0068 D2A2 97 SETB P2.2
006A D2A3 98 SETB P2.3
006C D2A4 99 SETB P2.4
006E 1202B5 100 LCALL YS4722U
101
0071 E533 102 MOV A,TEMPGW
0073 900298 103 MOV DPTR,#SGTB
0076 93 104 MOVC A,@A+DPTR
0077 547F 105 ANL A,#01111111B
0079 F580 106 MOV P0,A
007B C2A2 107 CLR P2.2
007D D2A0 108 SETB P2.0
007F D2A1 109 SETB P2.1
0081 D2A3 110 SETB P2.3
0083 D2A4 111 SETB P2.4
0085 1202B5 112 LCALL YS4722U
113
0088 E534 114 MOV A,TEMPXS1
008A 900298 115 MOV DPTR,#SGTB
008D 93 116 MOVC A,@A+DPTR
008E F580 117 MOV P0,A
0090 F580 118 MOV P0,A
0092 C2A3 119 CLR P2.3
0094 D2A0 120 SETB P2.0
0096 D2A1 121 SETB P2.1
0098 D2A2 122 SETB P2.2
009A D2A4 123 SETB P2.4
009C 1202B5 124 LCALL YS4722U
A51 MACRO ASSEMBLER LCDTEMP 03/08/2007 03:05:53 PAGE 3
125
009F 7446 126 MOV A,#01000110B
00A1 F580 127 MOV P0,A
00A3 C2A4 128 CLR P2.4
00A5 D2A0 129 SETB P2.0
00A7 D2A1 130 SETB P2.1
00A9 D2A2 131 SETB P2.2
00AB D2A3 132 SETB P2.3
00AD 1202B5 133 LCALL YS4722U
00B0 22 134 RET
135
00B1 E532 136 ZHWD: MOV A,TEMPSW ;瘴露認允敬?
00B3 900298 137 MOV DPTR,#SGTB
00B6 93 138 MOVC A,@A+DPTR
00B7 F580 139 MOV P0,A
00B9 C2A0 140 CLR P2.0
00BB D2A1 141 SETB P2.1
00BD D2A2 142 SETB P2.2
00BF D2A3 143 SETB P2.3
00C1 D2A4 144 SETB P2.4
00C3 1202B5 145 LCALL YS4722U
146
00C6 E533 147 MOV A,TEMPGW
00C8 900298 148 MOV DPTR,#SGTB
00CB 93 149 MOVC A,@A+DPTR
00CC 547F 150 ANL A,#01111111B
00CE F580 151 MOV P0,A
00D0 C2A1 152 CLR P2.1
00D2 D2A0 153 SETB P2.0
00D4 D2A2 154 SETB P2.2
00D6 D2A3 155 SETB P2.3
00D8 D2A4 156 SETB P2.4
00DA 1202B5 157 LCALL YS4722U
158
00DD E534 159 MOV A,TEMPXS1
00DF 900298 160 MOV DPTR,#SGTB
00E2 93 161 MOVC A,@A+DPTR
00E3 F580 162 MOV P0,A
00E5 C2A2 163 CLR P2.2
00E7 D2A0 164 SETB P2.0
00E9 D2A1 165 SETB P2.1
00EB D2A3 166 SETB P2.3
00ED D2A4 167 SETB P2.4
00EF 1202B5 168 LCALL YS4722U
169
00F2 E535 170 MOV A,TEMPXS2
00F4 900298 171 MOV DPTR,#SGTB
00F7 93 172 MOVC A,@A+DPTR
00F8 F580 173 MOV P0,A
00FA C2A3 174 CLR P2.3
00FC D2A0 175 SETB P2.0
00FE D2A1 176 SETB P2.1
0100 D2A2 177 SETB P2.2
0102 D2A4 178 SETB P2.4
0104 1202B5 179 LCALL YS4722U
180
0107 7446 181 MOV A,#01000110B
0109 F580 182 MOV P0,A
010B C2A4 183 CLR P2.4
010D D2A0 184 SETB P2.0
010F D2A1 185 SETB P2.1
0111 D2A2 186 SETB P2.2
0113 D2A3 187 SETB P2.3
0115 1202B5 188 LCALL YS4722U
0118 22 189 RET
190
A51 MACRO ASSEMBLER LCDTEMP 03/08/2007 03:05:53 PAGE 4
191
192 ;|------------------------------------------------|
193 ;| 讀出DS18B20序列號應用程序
194 ;|------------------------------------------------|
0119 C2AF 195 GETROM: CLR EA
011B 1201E1 196 LCALL INIT18B20
011E 200103 197 JB DS18B20,GETROM1
0121 D2AF 198 SETB EA
0123 22 199 RET
0124 7433 200 GETROM1:MOV A,#33H
0126 120230 201 LCALL WRITE18B20 ;送入讀DS18B20的ROM命令
0129 7C08 202 MOV R4,#8 ;從DS18B20中讀出8字節ROM示?
012B 793D 203 MOV R1,#ID1
012D 120210 204 LCALL READ18B20
0130 D2AF 205 SETB EA
0132 22 206 RET
207
0133 C2AF 208 GETTEMP:CLR EA
0135 1201E1 209 LCALL INIT18B20 ;先復位DS18B20
0138 200103 210 JB DS18B20,TSS2
013B D2AF 211 SETB EA
013D 22 212 RET
013E 74CC 213 TSS2: MOV A,#0CCH ; 跳筊OM匹配
0140 120230 214 LCALL WRITE18B20
0143 7444 215 MOV A,#44H ; 發出溫度轉換命令
0145 120230 216 LCALL WRITE18B20
0148 1202DB 217 LCALL YS800M ;延時0.8S,延時>750MS
014B 1201E1 218 LCALL INIT18B20
014E 74CC 219 MOV A,#0CCH ;跳筊OM匹配
0150 120230 220 LCALL WRITE18B20
0153 74BE 221 MOV A,#0BEH ;發出讀溫度命令
0155 120230 222 LCALL WRITE18B20
0158 7C02 223 MOV R4,#2 ;從DS18B20中讀出2字節溫度示?
015A 793B 224 MOV R1,#TEMPL
015C 120210 225 LCALL READ18B20 ;讀溫度
226
227 ; MOV TEMPH,#0FEH
228 ; MOV TEMPL,#37H
229
015F D2AF 230 SETB EA
231
232
0161 75382E 233 DOTEMP: MOV TEMPXSD,#2EH
0164 E53C 234 TESTS1: MOV A,TEMPH
0166 54F8 235 ANL A,#11111000B
0168 B4F80A 236 CJNE A,#0F8H,TESTS0
016B 7530FF 237 MOV TEMPFH,#0FFH
016E D203 238 SETB TEMPSBIT
0170 C202 239 CLR TEMPERRB
0172 020187 240 LJMP DOTEMP1
0175 B4000A 241 TESTS0: CJNE A,#00H,TEMPERR
0178 753000 242 MOV TEMPFH,#00H
017B C203 243 CLR TEMPSBIT
017D C202 244 CLR TEMPERRB
017F 020187 245 LJMP DOTEMP1
0182 246 TEMPERR:
0182 D202 247 SETB TEMPERRB
0184 0201DE 248 LJMP TEMPRET
0187 249 DOTEMP1:
0187 300315 250 JNB TEMPSBIT,DOTEMP2
018A E53C 251 MOV A,TEMPH
018C F4 252 CPL A
018D F53C 253 MOV TEMPH,A
018F E53B 254 MOV A,TEMPL
0191 F4 255 CPL A
0192 C3 256 CLR C
A51 MACRO ASSEMBLER LCDTEMP 03/08/2007 03:05:53 PAGE 5
0193 2401 257 ADD A,#1
0195 F53B 258 MOV TEMPL,A
0197 E53C 259 MOV A,TEMPH
0199 3400 260 ADDC A,#00H
019B 5407 261 ANL A,#00000111B
019D F53C 262 MOV TEMPH,A
019F 263 DOTEMP2:
019F E53C 264 MOV A,TEMPH
01A1 C4 265 SWAP A
01A2 F53C 266 MOV TEMPH,A
01A4 E53B 267 MOV A,TEMPL
01A6 540F 268 ANL A,#00001111B
01A8 F53A 269 MOV TEMPXS,A
01AA E53B 270 MOV A,TEMPL
01AC 54F0 271 ANL A,#11110000B
01AE C4 272 SWAP A
01AF A93C 273 MOV R1,TEMPH
01B1 49 274 ORL A,R1
01B2 F539 275 MOV TEMPZS,A
01B4 276 HBCD:
01B4 E539 277 MOV A,TEMPZS
01B6 75F064 278 MOV B,#100
01B9 84 279 DIV AB
01BA F531 280 MOV TEMPBW,A
01BC 740A 281 MOV A,#10
01BE C5F0 282 XCH A,B
01C0 84 283 DIV AB
01C1 F532 284 MOV TEMPSW,A
01C3 E5F0 285 MOV A,B
01C5 F533 286 MOV TEMPGW,A
01C7 7A04 287 FLXS: MOV R2,#4
01C9 E53A 288 MOV A,TEMPXS
01CB 540F 289 ANL A,#00001111B
01CD 75F004 290 MOV B,#4
01D0 A4 291 MUL AB
01D1 F9 292 MOV R1,A
01D2 7834 293 MOV R0,#TEMPXS1
01D4 900248 294 FLXS1: MOV DPTR,#DISPXS
01D7 E9 295 MOV A,R1
01D8 93 296 MOVC A,@A+DPTR
01D9 F6 297 MOV @R0,A
01DA 08 298 INC R0
01DB 09 299 INC R1
01DC DAF6 300 DJNZ R2,FLXS1
301
01DE 302 TEMPRET:
01DE D2AF 303 SETB EA
01E0 22 304 RET
305
306 ;-----------------------------------------------------
01E1 307 INIT18B20:
01E1 D2B3 308 SETB DQ
01E3 00 309 NOP
01E4 C2B3 310 CLR DQ
01E6 786B 311 MOV R0,#107 ;主機發出延時537微秒的復位低脈沖[2]
01E8 7903 312 MOV R1,#3
01EA D8FE 313 TSR1: DJNZ R0,TSR1
01EC 786B 314 MOV R0,#107
01EE D9FA 315 DJNZ R1,TSR1
01F0 D2B3 316 SETB DQ
01F2 00 317 NOP
01F3 00 318 NOP
01F4 00 319 NOP
01F5 7825 320 MOV R0,#25H
01F7 30B304 321 TSR2: JNB DQ,TSR3
01FA D8FB 322 DJNZ R0,TSR2
A51 MACRO ASSEMBLER LCDTEMP &nbs
0000 0133 14 AJMP START
15
0033 16 ORG 0033H
0033 17 START:
00B3 18 DQ BIT P3.3
00A0 19 RS EQU P2.0
00A1 20 RW EQU P2.1
00A2 21 E EQU P2.2
00A6 22 LED8P EQU P2.6
00A7 23 BLA EQU P2.7
24
0080 25 LCD EQU P0
0001 26 DS18B20 BIT 01H
0002 27 TEMPERRB BIT 02H
0003 28 TEMPSBIT BIT 03H
0030 29 TEMPFH EQU 30H ;溫度符號位
0031 30 TEMPBW EQU 31H ;溫度"百"位
0032 31 TEMPSW EQU 32H ;溫度"十"位
0033 32 TEMPGW EQU 33H ;溫度"個"位
0034 33 TEMPXS1 EQU 34H ;溫度小飾壞?1"位
0035 34 TEMPXS2 EQU 35H ;溫度小飾壞?2"位
0036 35 TEMPXS3 EQU 36H ;溫度小飾壞?3"位
0037 36 TEMPXS4 EQU 37H ;溫度小飾壞?4"?
0038 37 TEMPXSD EQU 38H
0039 38 TEMPZS EQU 39H
003A 39 TEMPXS EQU 3AH
003B 40 TEMPL EQU 3BH
003C 41 TEMPH EQU 3CH
003D 42 ID1 EQU 3DH
003E 43 ID2 EQU 3EH
003F 44 ID3 EQU 3FH
0040 45 ID4 EQU 40H
0041 46 ID5 EQU 41H
0042 47 ID6 EQU 42H
0043 48 ID7 EQU 43H
0044 49 ID8 EQU 44H
0046 50 DLCD1 EQU 46H
0047 51 DLCD2 EQU 47H
0048 52 DLCD3 EQU 48H
0049 53 DLCD4 EQU 49H
004A 54 DLCD5 EQU 4AH
004B 55 DLCD6 EQU 4BH
004C 56 DLCD7 EQU 4CH
004D 57 DLCD8 EQU 4DH
004E 58 DLCD9 EQU 4EH
A51 MACRO ASSEMBLER LCDTEMP 03/08/2007 03:05:53 PAGE 2
004F 59 DLCD10 EQU 4FH
0050 60 DLCD11 EQU 50H
0051 61 DLCD12 EQU 51H
0052 62 DLCD13 EQU 52H
0053 63 DLCD14 EQU 53H
0054 64 DLCD15 EQU 54H
0055 65 DLCD16 EQU 55H
66
67 ;---------------------------------------------------------
68
0033 3133 69 MAIN: ACALL GETTEMP
0035 200102 70 JB DS18B20,MAIN1
0038 0133 71 AJMP MAIN
003A 72 MAIN1:
003A C2A6 73 CLR LED8P ;開啟事牘芟允?
003C D2A7 74 SETB BLA ;關閉液晶模塊背光
003E 120049 75 LCALL DISP
0041 120119 76 LCALL GETROM
0044 120049 77 LCALL DISP
0047 0133 78 AJMP MAIN
79
80
81 ;-------- 事牘芟允咀映絳?-------
0049 300365 82 DISP: JNB TEMPSBIT,ZHWD ;溫度大于0嗎?
004C 7580BF 83 MOV P0,#0BFH ;負號
004F C2A0 84 CLR P2.0
0051 D2A1 85 SETB P2.1
0053 D2A2 86 SETB P2.2
0055 D2A3 87 SETB P2.3
0057 D2A4 88 SETB P2.4
0059 1202B5 89 LCALL YS4722U
90
005C E532 91 MOV A,TEMPSW ;瘴露認允敬?
005E 900298 92 MOV DPTR,#SGTB
0061 93 93 MOVC A,@A+DPTR
0062 F580 94 MOV P0,A
0064 C2A1 95 CLR P2.1
0066 D2A0 96 SETB P2.0
0068 D2A2 97 SETB P2.2
006A D2A3 98 SETB P2.3
006C D2A4 99 SETB P2.4
006E 1202B5 100 LCALL YS4722U
101
0071 E533 102 MOV A,TEMPGW
0073 900298 103 MOV DPTR,#SGTB
0076 93 104 MOVC A,@A+DPTR
0077 547F 105 ANL A,#01111111B
0079 F580 106 MOV P0,A
007B C2A2 107 CLR P2.2
007D D2A0 108 SETB P2.0
007F D2A1 109 SETB P2.1
0081 D2A3 110 SETB P2.3
0083 D2A4 111 SETB P2.4
0085 1202B5 112 LCALL YS4722U
113
0088 E534 114 MOV A,TEMPXS1
008A 900298 115 MOV DPTR,#SGTB
008D 93 116 MOVC A,@A+DPTR
008E F580 117 MOV P0,A
0090 F580 118 MOV P0,A
0092 C2A3 119 CLR P2.3
0094 D2A0 120 SETB P2.0
0096 D2A1 121 SETB P2.1
0098 D2A2 122 SETB P2.2
009A D2A4 123 SETB P2.4
009C 1202B5 124 LCALL YS4722U
A51 MACRO ASSEMBLER LCDTEMP 03/08/2007 03:05:53 PAGE 3
125
009F 7446 126 MOV A,#01000110B
00A1 F580 127 MOV P0,A
00A3 C2A4 128 CLR P2.4
00A5 D2A0 129 SETB P2.0
00A7 D2A1 130 SETB P2.1
00A9 D2A2 131 SETB P2.2
00AB D2A3 132 SETB P2.3
00AD 1202B5 133 LCALL YS4722U
00B0 22 134 RET
135
00B1 E532 136 ZHWD: MOV A,TEMPSW ;瘴露認允敬?
00B3 900298 137 MOV DPTR,#SGTB
00B6 93 138 MOVC A,@A+DPTR
00B7 F580 139 MOV P0,A
00B9 C2A0 140 CLR P2.0
00BB D2A1 141 SETB P2.1
00BD D2A2 142 SETB P2.2
00BF D2A3 143 SETB P2.3
00C1 D2A4 144 SETB P2.4
00C3 1202B5 145 LCALL YS4722U
146
00C6 E533 147 MOV A,TEMPGW
00C8 900298 148 MOV DPTR,#SGTB
00CB 93 149 MOVC A,@A+DPTR
00CC 547F 150 ANL A,#01111111B
00CE F580 151 MOV P0,A
00D0 C2A1 152 CLR P2.1
00D2 D2A0 153 SETB P2.0
00D4 D2A2 154 SETB P2.2
00D6 D2A3 155 SETB P2.3
00D8 D2A4 156 SETB P2.4
00DA 1202B5 157 LCALL YS4722U
158
00DD E534 159 MOV A,TEMPXS1
00DF 900298 160 MOV DPTR,#SGTB
00E2 93 161 MOVC A,@A+DPTR
00E3 F580 162 MOV P0,A
00E5 C2A2 163 CLR P2.2
00E7 D2A0 164 SETB P2.0
00E9 D2A1 165 SETB P2.1
00EB D2A3 166 SETB P2.3
00ED D2A4 167 SETB P2.4
00EF 1202B5 168 LCALL YS4722U
169
00F2 E535 170 MOV A,TEMPXS2
00F4 900298 171 MOV DPTR,#SGTB
00F7 93 172 MOVC A,@A+DPTR
00F8 F580 173 MOV P0,A
00FA C2A3 174 CLR P2.3
00FC D2A0 175 SETB P2.0
00FE D2A1 176 SETB P2.1
0100 D2A2 177 SETB P2.2
0102 D2A4 178 SETB P2.4
0104 1202B5 179 LCALL YS4722U
180
0107 7446 181 MOV A,#01000110B
0109 F580 182 MOV P0,A
010B C2A4 183 CLR P2.4
010D D2A0 184 SETB P2.0
010F D2A1 185 SETB P2.1
0111 D2A2 186 SETB P2.2
0113 D2A3 187 SETB P2.3
0115 1202B5 188 LCALL YS4722U
0118 22 189 RET
190
A51 MACRO ASSEMBLER LCDTEMP 03/08/2007 03:05:53 PAGE 4
191
192 ;|------------------------------------------------|
193 ;| 讀出DS18B20序列號應用程序
194 ;|------------------------------------------------|
0119 C2AF 195 GETROM: CLR EA
011B 1201E1 196 LCALL INIT18B20
011E 200103 197 JB DS18B20,GETROM1
0121 D2AF 198 SETB EA
0123 22 199 RET
0124 7433 200 GETROM1:MOV A,#33H
0126 120230 201 LCALL WRITE18B20 ;送入讀DS18B20的ROM命令
0129 7C08 202 MOV R4,#8 ;從DS18B20中讀出8字節ROM示?
012B 793D 203 MOV R1,#ID1
012D 120210 204 LCALL READ18B20
0130 D2AF 205 SETB EA
0132 22 206 RET
207
0133 C2AF 208 GETTEMP:CLR EA
0135 1201E1 209 LCALL INIT18B20 ;先復位DS18B20
0138 200103 210 JB DS18B20,TSS2
013B D2AF 211 SETB EA
013D 22 212 RET
013E 74CC 213 TSS2: MOV A,#0CCH ; 跳筊OM匹配
0140 120230 214 LCALL WRITE18B20
0143 7444 215 MOV A,#44H ; 發出溫度轉換命令
0145 120230 216 LCALL WRITE18B20
0148 1202DB 217 LCALL YS800M ;延時0.8S,延時>750MS
014B 1201E1 218 LCALL INIT18B20
014E 74CC 219 MOV A,#0CCH ;跳筊OM匹配
0150 120230 220 LCALL WRITE18B20
0153 74BE 221 MOV A,#0BEH ;發出讀溫度命令
0155 120230 222 LCALL WRITE18B20
0158 7C02 223 MOV R4,#2 ;從DS18B20中讀出2字節溫度示?
015A 793B 224 MOV R1,#TEMPL
015C 120210 225 LCALL READ18B20 ;讀溫度
226
227 ; MOV TEMPH,#0FEH
228 ; MOV TEMPL,#37H
229
015F D2AF 230 SETB EA
231
232
0161 75382E 233 DOTEMP: MOV TEMPXSD,#2EH
0164 E53C 234 TESTS1: MOV A,TEMPH
0166 54F8 235 ANL A,#11111000B
0168 B4F80A 236 CJNE A,#0F8H,TESTS0
016B 7530FF 237 MOV TEMPFH,#0FFH
016E D203 238 SETB TEMPSBIT
0170 C202 239 CLR TEMPERRB
0172 020187 240 LJMP DOTEMP1
0175 B4000A 241 TESTS0: CJNE A,#00H,TEMPERR
0178 753000 242 MOV TEMPFH,#00H
017B C203 243 CLR TEMPSBIT
017D C202 244 CLR TEMPERRB
017F 020187 245 LJMP DOTEMP1
0182 246 TEMPERR:
0182 D202 247 SETB TEMPERRB
0184 0201DE 248 LJMP TEMPRET
0187 249 DOTEMP1:
0187 300315 250 JNB TEMPSBIT,DOTEMP2
018A E53C 251 MOV A,TEMPH
018C F4 252 CPL A
018D F53C 253 MOV TEMPH,A
018F E53B 254 MOV A,TEMPL
0191 F4 255 CPL A
0192 C3 256 CLR C
A51 MACRO ASSEMBLER LCDTEMP 03/08/2007 03:05:53 PAGE 5
0193 2401 257 ADD A,#1
0195 F53B 258 MOV TEMPL,A
0197 E53C 259 MOV A,TEMPH
0199 3400 260 ADDC A,#00H
019B 5407 261 ANL A,#00000111B
019D F53C 262 MOV TEMPH,A
019F 263 DOTEMP2:
019F E53C 264 MOV A,TEMPH
01A1 C4 265 SWAP A
01A2 F53C 266 MOV TEMPH,A
01A4 E53B 267 MOV A,TEMPL
01A6 540F 268 ANL A,#00001111B
01A8 F53A 269 MOV TEMPXS,A
01AA E53B 270 MOV A,TEMPL
01AC 54F0 271 ANL A,#11110000B
01AE C4 272 SWAP A
01AF A93C 273 MOV R1,TEMPH
01B1 49 274 ORL A,R1
01B2 F539 275 MOV TEMPZS,A
01B4 276 HBCD:
01B4 E539 277 MOV A,TEMPZS
01B6 75F064 278 MOV B,#100
01B9 84 279 DIV AB
01BA F531 280 MOV TEMPBW,A
01BC 740A 281 MOV A,#10
01BE C5F0 282 XCH A,B
01C0 84 283 DIV AB
01C1 F532 284 MOV TEMPSW,A
01C3 E5F0 285 MOV A,B
01C5 F533 286 MOV TEMPGW,A
01C7 7A04 287 FLXS: MOV R2,#4
01C9 E53A 288 MOV A,TEMPXS
01CB 540F 289 ANL A,#00001111B
01CD 75F004 290 MOV B,#4
01D0 A4 291 MUL AB
01D1 F9 292 MOV R1,A
01D2 7834 293 MOV R0,#TEMPXS1
01D4 900248 294 FLXS1: MOV DPTR,#DISPXS
01D7 E9 295 MOV A,R1
01D8 93 296 MOVC A,@A+DPTR
01D9 F6 297 MOV @R0,A
01DA 08 298 INC R0
01DB 09 299 INC R1
01DC DAF6 300 DJNZ R2,FLXS1
301
01DE 302 TEMPRET:
01DE D2AF 303 SETB EA
01E0 22 304 RET
305
306 ;-----------------------------------------------------
01E1 307 INIT18B20:
01E1 D2B3 308 SETB DQ
01E3 00 309 NOP
01E4 C2B3 310 CLR DQ
01E6 786B 311 MOV R0,#107 ;主機發出延時537微秒的復位低脈沖[2]
01E8 7903 312 MOV R1,#3
01EA D8FE 313 TSR1: DJNZ R0,TSR1
01EC 786B 314 MOV R0,#107
01EE D9FA 315 DJNZ R1,TSR1
01F0 D2B3 316 SETB DQ
01F2 00 317 NOP
01F3 00 318 NOP
01F4 00 319 NOP
01F5 7825 320 MOV R0,#25H
01F7 30B304 321 TSR2: JNB DQ,TSR3
01FA D8FB 322 DJNZ R0,TSR2
A51 MACRO ASSEMBLER LCDTEMP &nbs
0
回復
@wo0794
0000 13 ORG 0000H00000133 14 AJMP START 15 0033 16 ORG 0033H0033 17 START: 00B3 18 DQ BIT P3.3 00A0 19 RS EQU P2.0 00A1 20 RW EQU P2.1 00A2 21 E EQU P2.2 00A6 22 LED8P EQU P2.6 00A7 23 BLA EQU P2.7 24 0080 25 LCD EQU P0 0001 26 DS18B20 BIT 01H 0002 27 TEMPERRB BIT 02H 0003 28 TEMPSBIT BIT 03H 0030 29 TEMPFH EQU 30H ;溫度符號位 0031 30 TEMPBW EQU 31H ;溫度"百"位 0032 31 TEMPSW EQU 32H ;溫度"十"位 0033 32 TEMPGW EQU 33H ;溫度"個"位 0034 33 TEMPXS1EQU 34H ;溫度小飾壞?1"位 0035 34 TEMPXS2EQU 35H ;溫度小飾壞?2"位 0036 35 TEMPXS3EQU 36H ;溫度小飾壞?3"位 0037 36 TEMPXS4EQU 37H ;溫度小飾壞?4"? 0038 37 TEMPXSDEQU 38H 0039 38 TEMPZS EQU 39H 003A 39 TEMPXS EQU 3AH 003B 40 TEMPL EQU 3BH 003C 41 TEMPH EQU 3CH 003D 42 ID1 EQU 3DH 003E 43 ID2 EQU 3EH 003F 44 ID3 EQU 3FH 0040 45 ID4 EQU 40H 0041 46 ID5 EQU 41H 0042 47 ID6 EQU 42H 0043 48 ID7 EQU 43H 0044 49 ID8 EQU 44H 0046 50 DLCD1 EQU 46H 0047 51 DLCD2 EQU 47H 0048 52 DLCD3 EQU 48H 0049 53 DLCD4 EQU 49H 004A 54 DLCD5 EQU 4AH 004B 55 DLCD6 EQU 4BH 004C 56 DLCD7 EQU 4CH 004D 57 DLCD8 EQU 4DH 004E 58 DLCD9 EQU 4EHA51MACROASSEMBLER LCDTEMP 03/08/200703:05:53PAGE 2 004F 59 DLCD10 EQU 4FH 0050 60 DLCD11 EQU 50H 0051 61 DLCD12 EQU 51H 0052 62 DLCD13 EQU 52H 0053 63 DLCD14 EQU 53H 0054 64 DLCD15 EQU 54H 0055 65 DLCD16 EQU 55H 66 67 ;--------------------------------------------------------- 68 00333133 69 MAIN: ACALL GETTEMP0035200102 70 JB DS18B20,MAIN100380133 71 AJMP MAIN003A 72 MAIN1: 003AC2A6 73 CLR LED8P ;開啟事牘芟允?003CD2A7 74 SETB BLA ;關閉液晶模塊背光003E120049 75 LCALL DISP0041120119 76 LCALL GETROM0044120049 77 LCALL DISP00470133 78 AJMP MAIN 79 80 81 ;--------事牘芟允咀映絳?-------0049300365 82 DISP: JNB TEMPSBIT,ZHWD ;溫度大于0嗎?004C7580BF 83 MOV P0,#0BFH ;負號004FC2A0 84 CLR P2.00051D2A1 85 SETB P2.10053D2A2 86 SETB P2.20055D2A3 87 SETB P2.30057D2A4 88 SETB P2.400591202B5 89 LCALL YS4722U 90 005CE532 91 MOV A,TEMPSW ;瘴露認允敬?005E900298 92 MOV DPTR,#SGTB006193 93 MOVC A,@A+DPTR0062F580 94 MOV P0,A0064C2A1 95 CLR P2.10066D2A0 96 SETB P2.00068D2A2 97 SETB P2.2006AD2A3 98 SETB P2.3006CD2A4 99 SETB P2.4006E1202B5 100 LCALL YS4722U 101 0071E533 102 MOV A,TEMPGW0073900298 103 MOV DPTR,#SGTB007693 104 MOVC A,@A+DPTR0077547F 105 ANL A,#01111111B0079F580 106 MOV P0,A007BC2A2 107 CLR P2.2007DD2A0 108 SETB P2.0007FD2A1 109 SETB P2.10081D2A3 110 SETB P2.30083D2A4 111 SETB P2.400851202B5 112 LCALL YS4722U 113 0088E534 114 MOV A,TEMPXS1008A900298 115 MOV DPTR,#SGTB008D93 116 MOVC A,@A+DPTR008EF580 117 MOV P0,A0090F580 118 MOV P0,A0092C2A3 119 CLR P2.30094D2A0 120 SETB P2.00096D2A1 121 SETB P2.10098D2A2 122 SETB P2.2009AD2A4 123 SETB P2.4009C1202B5 124 LCALL YS4722UA51MACROASSEMBLER LCDTEMP 03/08/200703:05:53PAGE 3 125 009F7446 126 MOV A,#01000110B00A1F580 127 MOV P0,A00A3C2A4 128 CLR P2.400A5D2A0 129 SETB P2.000A7D2A1 130 SETB P2.100A9D2A2 131 SETB P2.200ABD2A3 132 SETB P2.300AD1202B5 133 LCALL YS4722U00B022 134 RET 135 00B1E532 136 ZHWD: MOV A,TEMPSW ;瘴露認允敬?00B3900298 137 MOV DPTR,#SGTB00B693 138 MOVC A,@A+DPTR00B7F580 139 MOV P0,A00B9C2A0 140 CLR P2.000BBD2A1 141 SETB P2.100BDD2A2 142 SETB P2.200BFD2A3 143 SETB P2.300C1D2A4 144 SETB P2.400C31202B5 145 LCALL YS4722U 146 00C6E533 147 MOV A,TEMPGW00C8900298 148 MOV DPTR,#SGTB00CB93 149 MOVC A,@A+DPTR00CC547F 150 ANL A,#01111111B00CEF580 151 MOV P0,A00D0C2A1 152 CLR P2.100D2D2A0 153 SETB P2.000D4D2A2 154 SETB P2.200D6D2A3 155 SETB P2.300D8D2A4 156 SETB P2.400DA1202B5 157 LCALL YS4722U 158 00DDE534 159 MOV A,TEMPXS100DF900298 160 MOV DPTR,#SGTB00E293 161 MOVC A,@A+DPTR00E3F580 162 MOV P0,A00E5C2A2 163 CLR P2.200E7D2A0 164 SETB P2.000E9D2A1 165 SETB P2.100EBD2A3 166 SETB P2.300EDD2A4 167 SETB P2.400EF1202B5 168 LCALL YS4722U 169 00F2E535 170 MOV A,TEMPXS200F4900298 171 MOV DPTR,#SGTB00F793 172 MOVC A,@A+DPTR00F8F580 173 MOV P0,A00FAC2A3 174 CLR P2.300FCD2A0 175 SETB P2.000FED2A1 176 SETB P2.10100D2A2 177 SETB P2.20102D2A4 178 SETB P2.401041202B5 179 LCALL YS4722U 180 01077446 181 MOV A,#01000110B0109F580 182 MOV P0,A010BC2A4 183 CLR P2.4010DD2A0 184 SETB P2.0010FD2A1 185 SETB P2.10111D2A2 186 SETB P2.20113D2A3 187 SETB P2.301151202B5 188 LCALL YS4722U011822 189 RET 190 A51MACROASSEMBLER LCDTEMP 03/08/200703:05:53PAGE 4 191 192 ;|------------------------------------------------| 193 ;|讀出DS18B20序列號應用程序 194 ;|------------------------------------------------|0119C2AF 195 GETROM:CLR EA011B1201E1 196 LCALL INIT18B20011E200103 197 JB DS18B20,GETROM10121D2AF 198 SETB EA012322 199 RET01247433 200 GETROM1:MOV A,#33H0126120230 201 LCALL WRITE18B20 ;送入讀DS18B20的ROM命令01297C08 202 MOV R4,#8 ;從DS18B20中讀出8字節ROM示?012B793D 203 MOV R1,#ID1012D120210 204 LCALL READ18B200130D2AF 205 SETB EA013222 206 RET 207 0133C2AF 208 GETTEMP:CLR EA01351201E1 209 LCALL INIT18B20 ;先復位DS18B200138200103 210 JB DS18B20,TSS2013BD2AF 211 SETB EA013D22 212 RET013E74CC 213 TSS2: MOV A,#0CCH ;跳筊OM匹配0140120230 214 LCALL WRITE18B2001437444 215 MOV A,#44H ;發出溫度轉換命令0145120230 216 LCALL WRITE18B2001481202DB 217 LCALL YS800M ;延時0.8S,延時>750MS014B1201E1 218 LCALL INIT18B20014E74CC 219 MOV A,#0CCH ;跳筊OM匹配0150120230 220 LCALL WRITE18B20015374BE 221 MOV A,#0BEH ;發出讀溫度命令0155120230 222 LCALL WRITE18B2001587C02 223 MOV R4,#2 ;從DS18B20中讀出2字節溫度示?015A793B 224 MOV R1,#TEMPL015C120210 225 LCALL READ18B20 ;讀溫度 226 227 ; MOV TEMPH,#0FEH 228 ; MOV TEMPL,#37H 229 015FD2AF 230 SETB EA 231 232 016175382E 233 DOTEMP:MOV TEMPXSD,#2EH0164E53C 234 TESTS1:MOV A,TEMPH016654F8 235 ANL A,#11111000B0168B4F80A 236 CJNE A,#0F8H,TESTS0016B7530FF 237 MOV TEMPFH,#0FFH016ED203 238 SETB TEMPSBIT0170C202 239 CLR TEMPERRB0172020187 240 LJMP DOTEMP10175B4000A 241 TESTS0:CJNE A,#00H,TEMPERR0178753000 242 MOV TEMPFH,#00H017BC203 243 CLR TEMPSBIT017DC202 244 CLR TEMPERRB017F020187 245 LJMP DOTEMP10182 246 TEMPERR:0182D202 247 SETB TEMPERRB01840201DE 248 LJMP TEMPRET0187 249 DOTEMP1:0187300315 250 JNB TEMPSBIT,DOTEMP2018AE53C 251 MOV A,TEMPH018CF4 252 CPL A018DF53C 253 MOV TEMPH,A018FE53B 254 MOV A,TEMPL0191F4 255 CPL A0192C3 256 CLR CA51MACROASSEMBLER LCDTEMP 03/08/200703:05:53PAGE 501932401 257 ADD A,#10195F53B 258 MOV TEMPL,A0197E53C 259 MOV A,TEMPH01993400 260 ADDC A,#00H019B5407 261 ANL A,#00000111B019DF53C 262 MOV TEMPH,A019F 263 DOTEMP2:019FE53C 264 MOV A,TEMPH01A1C4 265 SWAP A01A2F53C 266 MOV TEMPH,A01A4E53B 267 MOV A,TEMPL01A6540F 268 ANL A,#00001111B01A8F53A 269 MOV TEMPXS,A01AAE53B 270 MOV A,TEMPL01AC54F0 271 ANL A,#11110000B01AEC4 272 SWAP A01AFA93C 273 MOV R1,TEMPH01B149 274 ORL A,R101B2F539 275 MOV TEMPZS,A01B4 276 HBCD:01B4E539 277 MOV A,TEMPZS01B675F064 278 MOV B,#10001B984 279 DIV AB01BAF531 280 MOV TEMPBW,A01BC740A 281 MOV A,#1001BEC5F0 282 XCH A,B01C084 283 DIV AB01C1F532 284 MOV TEMPSW,A01C3E5F0 285 MOV A,B01C5F533 286 MOV TEMPGW,A01C77A04 287 FLXS: MOV R2,#401C9E53A 288 MOV A,TEMPXS01CB540F 289 ANL A,#00001111B01CD75F004 290 MOV B,#401D0A4 291 MUL AB01D1F9 292 MOV R1,A01D27834 293 MOV R0,#TEMPXS101D4900248 294 FLXS1: MOV DPTR,#DISPXS01D7E9 295 MOV A,R101D893 296 MOVC A,@A+DPTR01D9F6 297 MOV @R0,A01DA08 298 INC R001DB09 299 INC R101DCDAF6 300 DJNZ R2,FLXS1 301 01DE 302 TEMPRET:01DED2AF 303 SETB EA01E022 304 RET 305 306 ;-----------------------------------------------------01E1 307 INIT18B20:01E1D2B3 308 SETB DQ01E300 309 NOP01E4C2B3 310 CLR DQ01E6786B 311 MOV R0,#107 ;主機發出延時537微秒的復位低脈沖[2]01E87903 312 MOV R1,#301EAD8FE 313 TSR1: DJNZ R0,TSR101EC786B 314 MOV R0,#10701EED9FA 315 DJNZ R1,TSR101F0D2B3 316 SETB DQ01F200 317 NOP01F300 318 NOP01F400 319 NOP01F57825 320 MOV R0,#25H01F730B304 321 TSR2: JNB DQ,TSR301FAD8FB 322 DJNZ R0,TSR2A51MACROASSEMBLER LCDTEMP &nbs
我有大量學習資料全是視頻講課逢送大家有需要者請盡快13116568786主要嵌入式系統講座,數控機床技術,單片機視頻,C語言,計算機接口,集成電路設計,數字信號處理,數字電路設計基礎,模擬電路設計,人工智能,射頻模擬接口,電路分析基礎,單片機應用,EDA,電路分析,計算機硬件,模擬電路入門,網寬,看懂各類電路圖紙,無線電全集,電視機手機維修視頻講座,電工電子傳感器等應用資料,DSP視頻教程,PLC視頻教程,觸摸屏學習手冊及軟件,還有我新開發的15KW電磁加熱技術買斷轉讓價為1萬元.以上學習資料全為多媒體電腦視頻光盤.每門課均在40左右節課程.有需要者只需付材料和快遞費50元即可.
0
回復
@自學成才
我有大量學習資料全是視頻講課逢送大家有需要者請盡快13116568786主要嵌入式系統講座,數控機床技術,單片機視頻,C語言,計算機接口,集成電路設計,數字信號處理,數字電路設計基礎,模擬電路設計,人工智能,射頻模擬接口,電路分析基礎,單片機應用,EDA,電路分析,計算機硬件,模擬電路入門,網寬,看懂各類電路圖紙,無線電全集,電視機手機維修視頻講座,電工電子傳感器等應用資料,DSP視頻教程,PLC視頻教程,觸摸屏學習手冊及軟件,還有我新開發的15KW電磁加熱技術買斷轉讓價為1萬元.以上學習資料全為多媒體電腦視頻光盤.每門課均在40左右節課程.有需要者只需付材料和快遞費50元即可.
很好!
0
回復