|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
PIC16f87x 各種子程序(續(xù)2) |
| 作者:小村之戀 欄目:單片機(jī) |
第7章 與PLC接口的四位LED數(shù)字顯示表 7.4 程序清單 LIST p=16F877 #INCLUDE "p16F877.inc" ADRESS EQU 0X20 ;數(shù)顯表地址存儲(chǔ)寄存器 DATA1_1 EQU 0X21 ;第1次讀第1幀數(shù)據(jù)存儲(chǔ)寄存器 DATA1_2 EQU 0X22 ;第2次讀第1幀數(shù)據(jù)存儲(chǔ)寄存器 DATA1_3 EQU 0X23 ;第3次讀第1幀數(shù)據(jù)存儲(chǔ)寄存器 DATA1_4 EQU 0X24 ;第4次讀第2幀數(shù)據(jù)存儲(chǔ)寄存器 DATA1_5 EQU 0X25 ;第5次讀第幀數(shù)據(jù)存儲(chǔ)寄存器 DATA2_1 EQU 0X26 ;第2幀數(shù)據(jù)存儲(chǔ)寄存器 FLAG EQU 0X27 ;讀數(shù)據(jù)標(biāo)志寄存器 LED1 EQU 0X28 ;數(shù)碼管1顯示的數(shù)據(jù)存儲(chǔ)寄存器(高位) LED2 EQU 0X29 ;數(shù)碼管2顯示的數(shù)據(jù)存儲(chǔ)寄存器 LED3 EQU 0X2A ;數(shù)碼管3顯示的數(shù)據(jù)存儲(chǔ)寄存器 LED4 EQU 0X2B ;數(shù)碼管4顯示的數(shù)據(jù)存儲(chǔ)寄存器 DATA1 EQU 0X2C ;第1幀數(shù)據(jù)存儲(chǔ)寄存器 SUM1 EQU 0X2D ;延時(shí)程序計(jì)數(shù)寄存器 SUM2 EQU 0X2E ;延時(shí)程序計(jì)數(shù)寄存器 H_BYTE EQU 0X2F ;16位二進(jìn)制數(shù)高8位 L_BYTE EQU 0X30 ;16位二進(jìn)制數(shù)低8位 R0 EQU 0X31 ;BCD碼存儲(chǔ)寄存器(高位) R1 EQU 0X32 ;BCD碼存儲(chǔ)寄存器 R2 EQU 0X33 ;BCD碼存儲(chǔ)寄存器(低位) COUNT1 EQU 0X35 ;讀到的5次數(shù)據(jù)有4次相等標(biāo)志寄存器 TEMP EQU 0X36 ;BCD碼調(diào)整臨時(shí)存數(shù)寄存器 ADJUST EQU 0X37 ;調(diào)整后BCD碼存儲(chǔ)寄存器 TEMP1 EQU 0X38 ;判地址是否相同臨時(shí)存數(shù)寄存器 COUNT EQU 0X39 F0 EQU 0 F1 EQU 1 ORG 0X000 NOP ;調(diào)試程序時(shí)用 GOTO MAIN ;*************端口初始化子程序***************** INITPORT BANKSEL PORTA ;選擇存儲(chǔ)體0 CLRF PORTA CLRF PORTB BANKSEL ADCON1 ;選擇存儲(chǔ)體1 MOVLW 0X07 MOVWF ADCON1 ;設(shè)RA0,RA1為數(shù)字I/ O MOVLW 0X03 MOVWF TRISA ;設(shè)RA0,RA1為輸入 MOVLW 0XE8 MOVWF TRISB ;設(shè)RB0,RB1,RB2,RB4為輸出 BANKSEL PORTC CLRF PORTC BANKSEL TRISC ;選擇存儲(chǔ)體1 &nbs |
| 2樓: | >>參與討論 |
| 作者: 小村之戀 于 2003/12/31 12:10:00 發(fā)布:
第8章 通用同步/異步通信的應(yīng)用 1. 單片機(jī)PIC1編程(發(fā)送部分) LIST P=16F877 #INCLUDE P16F876.INC CBLOCK 0X24 ;保留三個(gè)字節(jié)作為顯示用 COUNT ;作計(jì)數(shù)器或暫存器用 ENDC ORG 0X0000 ;程序復(fù)位入口 NOP START GOTO MAIN ORG 0X20 MAIN MOVLW 0X30 ;以下將RAM內(nèi)容初始化 MOVWF FSR ;從30H單元開始 MOVLW 0X30 ;將值30H賦給單元30H MOVWF COUNT INTRAM MOVF COUNT,0 ;將30H~7FH賦給單元30H~7FH MOVWF INDF INCF COUNT,1 INCF FSR,1 BTFSS COUNT,7 GOTO INTRAM BSF STATUS,RP0 ;將SCI部件初始化 MOVLW 0X19 ;將傳輸?shù)牟ㄌ芈试O(shè)為約9600 bps MOVWF SPBRG MOVLW 0X04 ;選擇異步高速方式傳輸8位數(shù)據(jù) MOVWF TXSTA BCF STATUS,RP0 MOVLW 0X80 ;允許同步串行口工作 MOVWF RCSTA BSF STATUS,RP0 BSF TRISC,7 ;將RC6、RC7設(shè)置為輸入方式,斷絕與外接電路的連接 BSF TRISC,6 BCF STATUS,RP0 MOVLW 0X30 ;30H作為同步字符發(fā)送 MOVWF FSR MOVF INDF,0 MOVWF TXREG ;將待發(fā)送的數(shù)據(jù)寫入發(fā)送緩沖器TXREG BSF STATUS,RP0 BSF TXSTA,TXEN ;發(fā)送允許 BCF STATUS,RP0 BSF RCSTA,CREN ;接收數(shù)據(jù)允許 LOOPTX BTFSS PIR1,RCIF ;等待PIC2的響應(yīng)字節(jié) GOTO LOOPTX MOVF RCREG,0 ;讀響應(yīng)字節(jié),清RCIF LOOPTX1 BTFSS PIR1,TXIF ;發(fā)送下一字節(jié) GOTO LOOPTX1 INCF FSR MOVF INDF,0 MOVWF TXREG BTFSS FSR,7 ;30H~7FH單元的內(nèi)容是否發(fā)送完? GOTO LOOPTX ;沒有,繼續(xù)下一字節(jié)的發(fā)送 BSF STATUS,RP0 ;如果是,則停止發(fā)送 BCF TXSTA,TXEN BCF STATUS,RP0 ;數(shù)據(jù)發(fā)送完畢 CALL LED ;調(diào)用顯示子程序,將發(fā)送的數(shù)據(jù)顯示出來(lái) END ;程序完 2. 單片機(jī)PIC2編程(接收部分) LIST P=16F876 #INCLUDE P16F876.INC CBLOCK 0X24 COUNT ENDC ORG 0X0000 NOP START GOTO MAIN MAIN BSF STATUS,RP0 ;初始化程序同發(fā)送子程序 MOVLW 0X19 ;波特率設(shè)置與PIC1相同 | |
|
|
| 免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號(hào) |