T2作為波特率控制UART_RXD 是硬中斷0或1口,如果能進入中斷,說明該線有一個起始位產生,進入中斷后調用下面的接收程序。退出硬中斷之前還需要將硬中斷標志重新復位。UART_TXD 是任何其它IO即可。UART_SEND: PUSH IE PUSH DPH PUSH DPL PUSH PSW PUSH 00H PUSH ACC CLR EA SETB UART_TXD ;START BIT MOV R0,A CLR TR2 ;TR2置1,計數器2啟動,時間計數啟動。 MOV A,RCAP2L;計數器2重新裝載值 MOV TL2,A ;置計數器2初值 ;T2需要重新裝載 MOV A,DPH MOV A,RCAP2H MOV TH2,A MOV A,R0 SETB TR2 ;TR2置1,計數器 JNB TF2,$ CLR TF2 JNB TF2,$ CLR TF2
上傳時間: 2014-01-12
上傳用戶:二十八號
1、程序的基本格式先介紹二條偽指令:EQU ——標號賦值偽指令ORG ——地址定義偽指令PIC16C5X在RESET后指令計算器PC被置為全“1”,所以PIC16C5X幾種型號芯片的復位地址為:PIC16C54/55:1FFHPIC16C56:3FFHPIC16C57/58:7FFH一般來說,PIC的源程序并沒有要求統一的格式,大家可以根據自己的風格來編寫。但這里我們推薦一種清晰明了的格式TITLE This is ⋯⋯ ;程序標題;--------------------------------------;名稱定義和變量定義;--------------------------------------F0 EQU 0RTCC EQU 1PC EQU 2STATUS EQU 3FSR EQU 4RA EQU 5RB EQU 6RC EQU 7┋PIC16C54 EQU 1FFH ;芯片復位地址PIC16C56 EQU 3FFHPIC16C57 EQU 7FFH;-----------------------------------------ORG PIC16C54 GOTO MAIN ;在復位地址處轉入主程序ORG 0 ;在0000H開始存放程序;-----------------------------------------;子程序區;-----------------------------------------DELAY MOVLW 255┋RETLW 0;------------------------------------------;主程序區;------------------------------------------MAINMOVLW B‘00000000’TRIS RB ;RB已由偽指令定義為6,即B口┋LOOPBSF RB,7 CALL DELAYBCF RB,7 CALL DELAY┋GOTO LOOP;-------------------------------------------END ;程序結束注:MAIN標號一定要處在0頁面內。2、程序設計基礎
上傳時間: 2013-11-14
上傳用戶:cjf0304
24c16讀寫驅動程序,//=-------------------------------------------------------------------------------/*模塊調用:讀數據:read(unsigned int address)寫數據:write(unsigned int address,unsigned char dd) dd為要寫的 數據字節*///------------------------------------------------------------------------------ sbit sda=P3^0;sbit scl=P3^1; sbit a0=ACC^0; //定義ACC的位,利用ACC操作速度最快sbit a1=ACC^1;sbit a2=ACC^2;sbit a3=ACC^3;sbit a4=ACC^4;sbit a5=ACC^5;sbit a6=ACC^6;sbit a7=ACC^7; //------------------------------------------------------------------------------#pragma disablevoid s24(void) //起始函數{_nop_(); scl=0; sda=1; scl=1; _nop_(); sda=0; _nop_(); _nop_(); scl=0; _nop_(); _nop_(); sda=1;} //------------------------------------------------------------------------------#pragma disablevoid p24(void) //停止函數{sda=0; scl=1; _nop_(); _nop_(); sda=1;} //-----------------------------------------------------------------------------#pragma disableunsigned char rd24(void) /////////////////從24c16讀一字節數據{ ACC=0x00;sda=1;scl=1;a7=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a6=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a5=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a4=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a3=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a2=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a1=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a0=sda;_nop_();_nop_();_nop_();_nop_();scl=0;sda=1;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0; /// ///////////////24c16的一位回答位。return(ACC);}//------------------------------------------------------------------------------#pragma disablevoid wd24(unsigned char dd) ////////////////向24c16寫一字節數據{ sda=1;ACC=dd;sda=a7;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a6;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a5;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a4;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a3;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a2;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a1;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a0;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=0;scl=1;//scl=0;(在下面程序中)}//---------------------------------------------------------------------------#pragma disableunsigned char read(unsigned int address){unsigned char dd; s24(); ////////////////////////開始條件 wd24(0xa0); /////////////////////////寫器件地址(寫命令) _nop_();_nop_();_nop_();_nop_(); scl=0; ///////////////////////////////////接收器件地址確認信號 wd24(address); //////////////////////////// 寫數據地址 _nop_();_nop_();_nop_();_nop_(); scl=0;s24(); ///////////////////////////////////開始條件 wd24(0xa1); /////////////////////////////寫器件地址(讀命令) scl=0; dd=rd24(); //////////////////////////////////讀 一字節 p24(); ////////////////////////////////////停止條件 return(dd);}//------------------------------------------------------------------------------#pragma disablevoid write(unsigned int address,unsigned char dd){s24(); /////////////////開始條件 wd24(0xa0); ////////////////////////寫器件地址; scl=0; wd24(address); /////////////////////寫數據地址 scl=0; wd24(dd); //////////////////////////寫dd數據 scl=0; p24(); /////////////////////////停止條件; }
上傳時間: 2013-11-18
上傳用戶:墻角有棵樹
單片機匯編語言程序庫內容有運算子程序,通訊子程序,擴展接口程序,中斷服務子程序,代碼轉換,邏輯操作,數據結構,其他。
上傳時間: 2013-10-09
上傳用戶:libinxny
;片內RAM初始化子程序 IBCLR :MOV A,R0 MOV R1,A CLR AIBC1 :MOV @R1,A INC R1 DJNZ R7,IBC1 RET ;片外RAM初始化子程序 EBCLR1 :MOV A,ADDPL MOV DPL,A MOV A,ADDPH MOV DPH,A CLR CEBC11 :MOVX @DPTR,A INC DPTR DJNZ R7,EBC11 RET ;片外RAM初始化子程序(雙字節個單元) EBCLR2 :MOV A,ADDPL MOV DPL,A MOV A,ADDPH MOV DPH,A MOV A,R7 JZ EBC21 INC R6EBC21 :CLR A MOVX @DPTR,A INC DPTR DJNZ R7,EBC21 DJNZ R6,EBC21 RET ;內部RAM數據復制程序;入口 :R0,R7;占用資源:A;堆棧需求:2字節;出口 :R1 IBMOV :MOV A,R0 ADD A,R7 MOV R0,A MOV A,R1 ADD A,R7 MOV R1,AIBM1 :DEC R0 DEC R1 MOV A,@R0 MOV @R1,A DJNZ R7,IBM1 RET ;外部RAM數據復制程序;入口 :ADDPH,ADDPL,R7;占用資源:ACC;堆棧需求:2字節;出口 :R0,R1 EBMOV1 :MOV A,ADDPL ADD A,R7 MOV DPL,A CLR A ADDC A,ADDPH MOV DPH,A MOV A,R7 ADD A,R1 XCH A,R0 ADDC A,#00H MOV P2,AEBM11 :DEC R0 CJNE R0,#0FFH,EBM12 DEC P2EBM12 :DEC DPL MOV A,DPL CJNE A,#0FFH,EBM13 DEC DPHEBM13 :MOVX A,@R0 MOVX @DPTR,A DJNZ R7,EBM11 RET ;外部RAM數據復制程序
上傳時間: 2013-10-30
上傳用戶:bs2005
子程序庫的使用方法如下:1.將子程序庫全部內容鏈接在應用程序之后,統一編譯即可。優點是簡單方便,缺點是程序太長,大量無關子程序也包含在其中。 2.僅將子程序庫中的有關部分內容鏈接在應用程序之后,統一編譯即可。有些子程序需要調用一些低級子程序,這些低級子程序也應該包含在內。優點是程序緊湊,缺點是需要對子程序庫進行仔細刪節。MCS-51 浮點運算子程序庫及其使用說明本浮點子程序庫有三個不同層次的版本,以便適應不同的應用場合: 1.小型庫(FQ51A.ASM):只包含浮點加、減、乘、除子程序。 2.中型庫(FQ51B.ASM):在小型庫的基礎上再增加絕對值、倒數、比較、平方、開平方、 數制轉換等子程序。 3.大型庫(FQ51.ASM):包含本說明書中的全部子程序。 為便于讀者使用本程序庫,先將有關約定說明如下: 1.雙字節定點操作數:用[R0]或[R1]來表示存放在由R0或R1指示的連續單元中的數 據,地址小的單元存放高字節。如果[R0]=1234H,若(R0)=30H,則(30H)=12H,(31H)=34H。 2.二進制浮點操作數:用三個字節表示,第一個字節的最高位為數符,其余七位為 階碼(補碼形式),第二字節為尾數的高字節,第三字節為尾數的低字節,尾數用雙字節 純小數(原碼)來表示。
上傳時間: 2013-10-15
上傳用戶:wmwai1314
§4-1 程序設計語言計算機程序設計語言是指計算機能夠理解和執行的語言。 程序設計語言的種類很多,歸納起來有三種: 機器語言、匯編語言和高級語言。 編程時采用哪種語言由程序設計語言的特點和適用場合決定。 機器語言、匯編語言和高級語言比較一覽表§4-2 匯編語言源程序格式匯編語言源程序格式如下:1、匯編語言源程序由一條一條匯編語句組成。2、每條匯編語句獨占一行,以CR—LF結束。3、典型的匯編語句由四部分組成: 標號:操作碼 操作數;注釋§4-3 偽指令一、偽指令與指令的區別: 偽指令由匯編程序識別,用來對匯編過程進行某種控制,或者對符號、標號賦值。在匯編過程中, 偽指令不產生可執行的目標代碼;而指令由CPU執行,在匯編過程中,產生可執行的目標代碼,完成對數據的運算與處理。二、常用的偽指令:ORG END EQU DATA DB DW DS §4-4 匯編語言程序設計基礎一、匯編語言程序設計的一般步驟 分析課題 確定算法 畫流程圖 編寫程序 上機調試二、程序結構 按程序的走向可以將程序分成4種結構: 簡單程序 分支程序 循環程序 子程序
上傳時間: 2013-10-15
上傳用戶:daoxiang126
微機原理與匯編語言程序設計課件為PPT文件,內容有:第1章 基礎知識 4第2章 微型計算機系統結構 6第3章 程序加載并執行 4第4章 微處理器一般指令 6第5章 匯編語言程序設計基礎 4第6章 算術運算與邏輯運算 8第7章 基本輸入與輸出 4第8章 程序流程控制 10第9章 字符串處理 6第10章 宏 4第11章 過程 4第12章 文件處理 4第13章 模塊化程序設計 4
上傳時間: 2013-10-28
上傳用戶:yanming8525826
紅外遙控接收;=================================================;; zsMCU51實驗板配套學習例程;; 中山單片機學習網 智佳科技;; 作者:逸風 QQ:105558851;; http://www.zsmcu.com; E-mail:info@zsmcu.com;=================================================ORG 0000HLJMP START;轉入主程序ORG 0010HSTART:MAIN:JNB P2.2,IRLJMP MAIN;以下為進入P3.2腳外部中斷子程序,也就是解碼程序IR:MOV R6,#9SB:ACALL DELAY882 ;調用882微秒延時子程序JB P2.2,EXIT ;延時882微秒后判斷P3.2腳是否出現高電平如果有就退出解碼程序DJNZ R6, SB ;重復10次,目的是檢測在8820微秒內如果出現高電平就退出解碼程序;以上完成對遙控信號的9000微秒的初始低電平信號的識別。JNB P2.2, $ ;等待高電平避開9毫秒低電平引導脈沖ACALL DELAY2400JNB P2.2,IR_Rp ;ACALL DELAY2400 ;延時4.74毫秒避開4.5毫秒的結果碼MOV R1,#1AH ;設定1AH為起始RAM區MOV R2,#4PP:MOV R3,#8JJJJ:JNB P2.2,$ ;等待地址碼第一位的高電平信號LCALL DELAY882 ;高電平開始后用882微秒的時間尺去判斷信號此時的高低電平狀態MOV C,P2.2 ;將P3.2引腳此時的電平狀態0或1存入C中 JNC UUU ;如果為0就跳轉到UUULCALL DELAY1000UUU:MOV A,@R1 ;將R1中地址的給ARRC A ;將C中的值0或1移入A中的最低位MOV @R1,A ;將A中的數暫時存放在R1中DJNZ R3,JJJJ ;接收地址碼的高8位INC R1 ;對R1中的值加1,換下一個RAMDJNZ R2,PP ;接收完16位地址碼和8位數據碼和8位數據,存放在1AH/1BH/1CH/1DH的RAM中MOV P1,1DH ;將按鍵的鍵值通過P1口的8個LED顯示出來!CLR P2.3 ;蜂鳴器鳴響-嘀嘀嘀-的聲音,表示解碼成功LCALL DELAY2400LCALL DELAY2400LCALL DELAY2400SETB P2.3;蜂鳴器停止LJMP MAINIR_Rp:LJMP MAINEXIT:LJMP MAIN ;退出解碼子程序;=============================882DELAY882: ;1.085x ((202x4)+5)=882MOV R7,#202DELAY882_A:NOPNOPDJNZ R7,DELAY882_ARET;=============================1000DELAY1000: ;1.085x ((229x4)+5)=999.285MOV R7,#229DELAY1000_A:NOPNOPDJNZ R7,DELAY1000_ARET;=============================2400
上傳時間: 2013-11-01
上傳用戶:2525775
單片機常用程序庫包中提供了一些有實際應用價值的子程序供參考選用 SUB1----X25045/43 看門狗/存儲器與 89C2051接口子程序 源程序/原理圖(21K)X25045.EXE SUB2----AT24C02/04/08/16 串行存儲器與 89C2051接口子程序 源程序/原理圖(22K) AT24C02.EXE SUB3----紅外遙控器(熊貓M50462/C54L2)與 89C2051接口子程序 源程序/原理圖(21K) M50462.EXE SUB4----DS1302/HT1302 實時時鐘與 89C2051接口子程序 源程序/原理圖(20K) DS1302.EXE SUB6----AT89C2051與上位機RS232通訊接口子程序 源程序/原理圖(25K) RS232.EXE SUB7----VB5.0 與AT89C2051通訊接口子程序 源程序/原理圖(22K) VB5.EXE SUB8----單片機間RS485多機通訊子程序 源程序/原理圖(24K) RS485.EXE
上傳時間: 2013-10-17
上傳用戶:gundan