a_bit equ 20h ;個位數(shù)存放處 b_bit equ 21h ;十位數(shù)存放處 temp equ 22h ;計數(shù)器寄存器 star: mov temp,#0 ;初始化計數(shù)器 stlop: acall display inc temp mov a,temp cjne a,#100,next ;=100重來 mov temp,#0 next: ljmp stlop ;顯示子程序 display: mov a,temp ;將temp中的十六進制數(shù)轉(zhuǎn)換成10進制 mov b,#10 ;10進制/10=10進制 div ab mov b_bit,a ;十位在a mov a_bit,b ;個位在b mov dptr,#numtab ;指定查表啟始地址 mov r0,#4 dpl1: mov r1,#250 ;顯示1000次 dplop: mov a,a_bit ;取個位數(shù) MOVC A,@A+DPTR ;查個位數(shù)的7段代碼 mov p0,a ;送出個位的7段代碼
標(biāo)簽: 直接驅(qū)動 數(shù)碼管 計數(shù)器 程序
上傳時間: 2013-11-06
上傳用戶:lx9076
1.1 什么叫單片機? 1.2 單片機主要應(yīng)用于哪些領(lǐng)域? 1.3 單片機由哪些基本部件組成? 1.4 一個字節(jié)的十六進制數(shù)最大值相當(dāng)于多大的十進制數(shù),兩個字節(jié)的十六進制數(shù)最大值相當(dāng)于多大的十進制數(shù)。 1.5 存儲器的容量如下所示,若它的首地址為 0000H,寫出它的末地址。 存儲器容量 首地址 末地址 1KB 0000H 2KB 0000H 4KB 0000H
標(biāo)簽: 單片機教材
上傳時間: 2013-11-23
上傳用戶:894448095
入口條件:待轉(zhuǎn)換的雙字節(jié)BCD碼小數(shù)在R4、R5中。出口信息:轉(zhuǎn)換后的雙字節(jié)十六進制小數(shù)在R2、R3中。*影響資源:PSW、A、R2~R6 堆棧需求: 2字節(jié)BHD2: MOV R6,#10H ;準(zhǔn)備計算兩個字節(jié)小數(shù)BHD3: MOV A,R5 ;按十進制倍增
上傳時間: 2013-10-23
上傳用戶:zhang_yi
基于單片機的紅外門進控制系統(tǒng)設(shè)計與制作:我們所做的創(chuàng)新實驗項目“基于單片機的紅外門控系統(tǒng)”已基本完成,現(xiàn)將其工作原理簡要說明。該系統(tǒng)主要分為兩大部分:一是紅外傳感器部分。二是單片機計數(shù)顯示控制部分。基本電路圖如下:其中紅外傳感器部分我們采用紅外對管實現(xiàn),紅外對管平行放置,平常處于接收狀態(tài),經(jīng)比較器輸出低電平,當(dāng)有人經(jīng)過時,紅外線被擋住,接收管接收不到紅外線,經(jīng)比較器輸出高電平。這樣,當(dāng)有人經(jīng)過時便會產(chǎn)生一個電平的跳變。單片機控制部分主要是通過外部兩個中斷判斷是否有人經(jīng)過,如果有人經(jīng)過,由于電平跳變的產(chǎn)生,進入中斷服務(wù)程序,這里我們采用了兩對紅外傳感器接到兩個外部中斷口,中斷0作為入口,實現(xiàn)加1操作,中斷1作為出口,實現(xiàn)減1操作。另外,我們通過P0口控制室內(nèi)燈的亮暗,當(dāng)寄存器計數(shù)值為0時,熄燈,不為0時,燈亮。顯示部分,采用兩位數(shù)碼管動態(tài)顯示,如有必要,可以很方便的擴展為四位計數(shù)。精益求精!在實驗過程中,我們走了非常多的彎路,做出來的東西根本不是自己想要的,我們本想做成室內(nèi)只有一個門的進出計數(shù),原理已清楚,即在門的兩邊放置兩對紅外對管,進出時,擋住兩對對管的順序不同,因此,可判斷是進入還是出去,從而實現(xiàn)加減計數(shù),編程時,可分別在兩個中斷服務(wù)程序的入口置標(biāo)志位,根據(jù)標(biāo)志位判斷進出,詳細(xì)內(nèi)容在程序部分。理論如此,但在實際過程中,還是發(fā)現(xiàn)實現(xiàn)不了上述功能,我們初步判定認(rèn)為是程序掌握得不夠好,相信隨著自己對單片機了解的深入,應(yīng)該會做出更好的 (因為我們是臨時學(xué)的單片機),程序的具體內(nèi)容如下: $MOD52 ORG 0000H LJMP MAIN ORG 0003H LJMP 0100H ORG 0013H LJMP 0150H ORG 0050HMAIN: CLR A MOV 30H , A ;初始化緩存區(qū) MOV 31H , A MOV 32H , A MOV 33H , A MOV R6 , A MOV R7 , A SETB EA SETB EX0 SETB EX1 SETB IT0 SETB IT1 SETB PX1NEXT1: ACALL HEXTOBCDD ;調(diào)用數(shù)制轉(zhuǎn)換子程序 ACALL DISPLAY ;調(diào)用顯示子程序 LJMP NEXT1 ORG 0100H ;中斷0服務(wù)程序 LCALL DELY mov 70h,#2 djnz 70h,next JBC F0,NEXT SETB F0 CLR P0.0 LCALL DELY0 SETB P0.0 MOV A , R7 ADD A , #1 MOV R7, A MOV A , R6 ADDC A , #0 MOV R6 , A CJNE R6 , #07H , NEXT CLR A MOV R6 , A MOV R7 , ANEXT: RETI ORG 0150H ;中斷1服務(wù)程序 LCALL DELY mov 70h,#2 djnz 70h,next2 JBC F0,NEXT2 SETB F0 CLR P0.0 LCALL DELY0 SETB P0.0 CLR C MOV A , R7 SUBB A , #1 MOV R7, A MOV A , R6 SUBB A , #0 MOV R6 , A CJNE R6 , #07H , NEXT2 CLR A MOV R6 , A MOV R7 , ANEXT2: RETI ORG 0200HHEXTOBCDD:MOV A , R6 ;由十六進制轉(zhuǎn)化為十進制 PUSH ACC MOV A , R7 PUSH ACC MOV A , R2 PUSH ACC CLR A MOV R3 , A MOV R4 , A MOV R5 , A MOV R2 , #10HHB3: MOV A , R7 ;將十六進制中最高位移入進位位中 RLC A MOV R7 , A MOV A , R6 RLC A MOV R6 , A MOV A , R5 ;每位數(shù)加上本身相當(dāng)于將這個數(shù)乘以2 ADDC A , R5 DA A MOV R5 , A MOV A , R4 ADDC A , R4 DA A ;十進制調(diào)整 MOV R4 , A MOV A , R3 ADDC A , R3 DJNZ R2 , HB3 POP ACC MOV R2 , A POP ACC MOV R7 , A POP ACC MOV R6 , A RET ORG 0250HDISPLAY: MOV R0 , #30H MOV A , R5 ANL A , #0FH MOV @R0 , A MOV A , R5 SWAP A ANL A , #0FH INC R0 MOV @R0 , A MOV A , R4 ANL A , #0FH INC R0 MOV @R0 , A MOV A , R4 SWAP A ANL A , #0FH INC R0 MOV @R0 , A MOV R0 , #30H MOV R2 , #11111110BAGAIN: MOV A , R2 MOV P2 , A MOV A , @R0 MOV DPTR , #TAB MOVC A , @A+DPTR MOV P1 , A ACALL DELAY INC R0 MOV A , R2 RL A MOV R2 , A JB ACC.4 , AGAIN RETTAB: DB 03FH , 06H , 5BH , 4FH , 66H , 6DH , 7DH , 07H , 7FH , 6FH ;七段碼表DELY: MOV R1,#80D1: MOV R2,#100 DJNZ R2,$ DJNZ R1,D1 RET DELAY: MOV TMOD , #01H ;延時子程序 MOV TL0 , #0FEH MOV TH0 , #0FEH SETB TR0WAIT: JNB TF0 , WAIT CLR TF0 CLR TR0 RETDELY0: MOV R1, #200D3: MOV R2,#250 DJNZ R2,$ DJNZ R1,D3 RET END 該系統(tǒng)實際應(yīng)用廣泛。可用在生產(chǎn)線上產(chǎn)品數(shù)量統(tǒng)計、公交車智能計數(shù)問候(需添加語音芯片)、超市內(nèi)人數(shù)統(tǒng)計等公共場合。另外,添加串口通信部分便可實現(xiàn)與PC數(shù)據(jù)交換的功能。 由于,實驗簡化了,剩下不少零件和資金,所以我們又做了兩項其他的實驗。
標(biāo)簽: 單片機 紅外 控制系統(tǒng)設(shè)計 原理圖
上傳時間: 2013-12-22
上傳用戶:tangsiyun
單片機基礎(chǔ)知識單片機的外部結(jié)構(gòu):1、 DIP40雙列直插;2、 P0,P1,P2,P3四個8位準(zhǔn)雙向I/O引腳;(作為I/O輸入時,要先輸出高電平)3、 電源VCC(PIN40)和地線GND(PIN20);4、 高電平復(fù)位RESET(PIN9);(10uF電容接VCC與RESET,即可實現(xiàn)上電復(fù)位)5、 內(nèi)置振蕩電路,外部只要接晶體至X1(PIN18)和X0(PIN19);(頻率為主頻的12倍)6、 程序配置EA(PIN31)接高電平VCC;(運行單片機內(nèi)部ROM中的程序)7、 P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1 單片機內(nèi)部I/O部件:(所為學(xué)習(xí)單片機,實際上就是編程控制以下I/O部件,完成指定任務(wù))1、 四個8位通用I/O端口,對應(yīng)引腳P0、P1、P2和P3;2、 兩個16位定時計數(shù)器;(TMOD,TCON,TL0,TH0,TL1,TH1)3、 一個串行通信接口;(SCON,SBUF)4、 一個中斷控制器;(IE,IP)針對AT89C52單片機,頭文件AT89x52.h給出了SFR特殊功能寄存器所有端口的定義。教科書的160頁給出了針對MCS51系列單片機的C語言擴展變量類型。 C語言編程基礎(chǔ):1、 十六進制表示字節(jié)0x5a:二進制為01011010B;0x6E為01101110。2、 如果將一個16位二進數(shù)賦給一個8位的字節(jié)變量,則自動截斷為低8位,而丟掉高8位。3、 ++var表示對變量var先增一;var—表示對變量后減一。4、 x |= 0x0f;表示為 x = x | 0x0f;5、 TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。6、 While( 1 ); 表示無限執(zhí)行該語句,即死循環(huán)。語句后的分號表示空循環(huán)體,也就是{;}第一章 單片機最小應(yīng)用系統(tǒng):單片機最小系統(tǒng)的硬件原理接線圖:1、 接電源:VCC(PIN40)、GND(PIN20)。加接退耦電容0.1uF2、 接晶體:X1(PIN18)、X2(PIN19)。注意標(biāo)出晶體頻率(選用12MHz),還有輔助電容30pF3、 接復(fù)位:RES(PIN9)。接上電復(fù)位電路,以及手動復(fù)位電路,分析復(fù)位工作原理4、 接配置:EA(PIN31)。說明原因。第二章 基本I/O口的應(yīng)用第三章 顯示驅(qū)動第七章 串行接口應(yīng)用
標(biāo)簽: 單片機
上傳時間: 2013-10-30
上傳用戶:athjac
C語言編程基礎(chǔ):1. 十六進制表示字節(jié)0x5a:二進制為01011010B;0x6E為01101110。 2. 如果將一個16位二進數(shù)賦給一個8位的字節(jié)變量,則自動截斷為低8位,而丟掉高8位。 3. ++var表示對變量var先增一;var—表示對變量后減一。 4. x |= 0x0f;表示為 x = x | 0x0f; 5. TMOD = ( TMOD & 0xf0 ) | 0x05;表示給變量TMOD的低四位賦值0x5,而不改變TMOD的高四位。 6. While( 1 ); 表示無限執(zhí)行該語句,即死循環(huán)。語句后的分號表示空循環(huán)體,也就是{;} 在某引腳輸出高電平的編程方法:(比如P1.3(PIN4)引腳)1. #include <AT89x52.h> //該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P1.3 2. void main( void ) //void 表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位入口 3. { 4. P1_3 = 1; //給P1_3賦值1,引腳P1.3就能輸出高電平VCC 5. While( 1 ); //死循環(huán),相當(dāng) LOOP: goto LOOP; 6. } 注意:P0的每個引腳要輸出高電平時,必須外接上拉電阻(如4K7)至VCC電源。在某引腳輸出低電平的編程方法:(比如P2.7引腳)代碼1. #include <AT89x52.h> //該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P2.7 2. void main( void ) //void 表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位入口 3. { 4. P2_7 = 0; //給P2_7賦值0,引腳P2.7就能輸出低電平GND 5. While( 1 ); //死循環(huán),相當(dāng) LOOP: goto LOOP; 6. } 在某引腳輸出方波編程方法:(比如P3.1引腳)代碼1. #include <AT89x52.h> //該頭文檔中有單片機內(nèi)部資源的符號化定義,其中包含P3.1 2. void main( void ) //void 表示沒有輸入?yún)?shù),也沒有函數(shù)返值,這入單片機運行的復(fù)位入口 3. { 4. While( 1 ) //非零表示真,如果為真則執(zhí)行下面循環(huán)體的語句 5. { 6. P3_1 = 1; //給P3_1賦值1,引腳P3.1就能輸出高電平VCC 7. P3_1 = 0; //給P3_1賦值0,引腳P3.1就能輸出低電平GND 8. } //由于一直為真,所以不斷輸出高、低、高、低……,從而形成方波 9. } 將某引腳的輸入電平取反后,從另一個引腳輸出:( 比如 P0.4 = NOT( P1.1) )
上傳時間: 2013-11-02
上傳用戶:zengduo
用MDK 生成bin 文件1用MDK 生成bin 文件Embest 徐良平在RV MDK 中,默認(rèn)情況下生成*.hex 的可執(zhí)行文件,但是當(dāng)我們要生成*.bin 的可執(zhí)行文件時怎么辦呢?答案是可以使用RVCT 的fromelf.exe 工具進行轉(zhuǎn)換。也就是說首先將源文件編譯鏈接成*.axf 的文件,然后使用fromelf.exe 工具將*.axf 格式的文件轉(zhuǎn)換成*.bin格式的文件。下面將具體說明這個操作步驟:1. 打開Axf_To_Bin 文件中的Axf_To_Bin.uv2 工程文件;2. 打開Options for Target ‘Axf_To_Bin’對話框,選擇User 標(biāo)簽頁;3. 構(gòu)選Run User Programs After Build/Rebuild 框中的Run #1 多選框,在后邊的文本框中輸入C:\Keil\ARM\BIN31\fromelf.exe --bin -o ./output/Axf_To_Bin.bin ./output/Axf_To_Bin.axf 命令行;4. 重新編譯文件,在./output/文件夾下生成了Axf_To_Bin.bin 文件。在上面的步驟中,有幾點值得注意的是:1. C:\Keil\ARM\BIN31\表示RV MDK 的安裝目錄;2. fromelf.exe 命令的具體語法格式如下:命令的格式為:fromelf [options] input_file命令選項如下:--help 顯示幫助信息--vsn 顯示版本信息--output file 輸出文件(默認(rèn)的輸出為文本格式)--nodebug 在生成的映象中不包含調(diào)試信息--nolinkview 在生成的映象中不包含段的信息二進制輸出格式:--bin 生成Plain Binary 格式的文件--m32 生成Motorola 32 位十六進制格式的文件--i32 生成Intel 32 位十六進制格式的文件--vhx 面向字節(jié)的位十六進制格式的文件t--base addr 設(shè)置m32,i32 格式文件的基地址--text 顯示文本信息文本信息的標(biāo)志-v 打印詳細(xì)信息-a 打印數(shù)據(jù)地址(針對帶調(diào)試信息的映象)-d 打印數(shù)據(jù)段的內(nèi)容-e 打印表達(dá)式表print exception tables-f 打印消除虛函數(shù)的信息-g 打印調(diào)試表print debug tables-r 打印重定位信息-s 打印字符表-t 打印字符串表-y 打印動態(tài)段的內(nèi)容-z 打印代碼和數(shù)據(jù)大小的信息
標(biāo)簽: MDK bin 可執(zhí)行文件
上傳時間: 2013-12-17
上傳用戶:AbuGe
本程序是用純C語言編的一個基于命令行的四則運算計算器。主要用于計算四則運算表達(dá)式的值,同時可以實現(xiàn)四種進制任意兩種之間的轉(zhuǎn)換。 主要功能:1.四則運算:能夠解釋并執(zhí)行四則運算表達(dá)式。四則運算就是包含+、—、*、/、.(小數(shù)點)和數(shù)字的運算表達(dá)式,例如:3+2.9*(5-6/3) -4+(+8*6)等; 2.錯誤警告:能夠?qū)Σ环险Z法的表達(dá)式給出相應(yīng)的錯誤警告,本程序共給出了8大類警告 3.進制轉(zhuǎn)換:能夠做二進制、八進制、十進制、十六進制中任意兩種進制之間的互相轉(zhuǎn)換 4.幫助系統(tǒng):提供完善的幫助系統(tǒng) 5.出錯保護:有良好的出錯保護系統(tǒng),命令行輸入錯誤,程序仍能正常運行。
上傳時間: 2013-12-21
上傳用戶:aysyzxzm
這個可以算是我第一個用Java寫的應(yīng)用程序,界面使用了AWT。功能非常簡單,但通過它使我“懂”得了Java。 它的功能是顏色的十進制與十六進制間的轉(zhuǎn)換。
標(biāo)簽: Java 應(yīng)用程序
上傳時間: 2015-02-12
上傳用戶:yph853211
兩個經(jīng)典程序:顯示系統(tǒng)時間,轉(zhuǎn)換(大小寫字母轉(zhuǎn)換、二進制/八進制/十進制/十六進制間轉(zhuǎn)換)
標(biāo)簽: 程序 顯示系統(tǒng)
上傳時間: 2013-12-25
上傳用戶:Avoid98
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1