串行LED譯碼/驅動(dòng)器件TEC9607在PIC16C5X系列單片機中的應用
SI EQU 1 ;RA1為串行數據輸入端
SCP EQU 2 ??;RA2為時(shí)鐘端
BUFF EQU 10H ;數據緩存
MBUF EQU 13H ;13H,14H,15H,16H四個(gè)寄存器為顯示緩存
??;13H最低位顯示段碼
??;14H次低位顯示段碼
??;15H次高位顯示段碼
??;16H最高位顯示段碼
??;17H為任意數
DISBUF EQU OEH ;OEH,OFH為壓縮式顯示數據
;OEH高兩位顯示數據
??;OFH低兩位顯示數據
BIT EQU 9??;每字節位數(8)
FSR EQU 4 ;文件選擇寄存器
RA EQU 5 ;I/O端口A(yíng)
CONVERT MOVWF 2 ;PC=W
TABLE RETLW 0FCH ;“ 0
RETLW 60H ??;“1”
RETLW 0DAH??; “2”
RETLW 0F2H ;“3
RETLW 66H ; “4”
RETLW 0B6H ; “5
RETLW 0BEH ;“6
RETLW 0E4H ;“7
RETLW 0FEH ;“8
RETLW 0F6H ;“9
RETLW 00H ;“
ETLW 7CH ??; “U
RETLW 9EH ??;“E
RETLW 00H ;“
RETLW 00H ;“
RETLW 00H ;“
DIS MOVLW MBUF ;將顯示段碼寄存器 首址(f13)送f4
MOVWF FSR
MOVLW TABLE ;把段碼表起始地址 送BUFF
MOVWF BUFF
MOVF 0FH,0 ;取出最低位待顯數據
ANDLW 0FH
ADDWF BUFF,0??;BUFF+W→W 取得段碼表中的偏移地址
CALL CONVERT ;轉段碼查詢(xún)子程序
MOVWF 0 ;段碼值送W
INCF FSR ;WF13
;以下依次完成高三位數據嘍溫脛檔淖換
MOVLW TABLE
MOVWF BUFF
MOVF 0FH,0
MOVWF TRBUF
SWAPF TRBUF,0
ANDLW 0FH
ADDWF BUFF,0
CALL CONVERT
MOVWF 0
INCF FSR
MOVLW TABLE
MOVWF BUFF
MOVF OEH,0
ANDLW 0FH
ADDWF BUFF,0
CALL CONVERT
MOVWF 0
INCF FSR
MOVLW TABLE
MOVWF BUFF
MOVF 0EH,0
MOVWF TRBUF
SWAPF TRBUF,0
ANDLW 0FH
ADDWF BUFF,0
CALL CONVERT
MOVWF 0
MOVLW 30H ;使RA1,RA2為輸出狀態(tài)
TRIS RA
BCF RA, SI
BCF RA, SCP
MOVLW MBUF
MOVWF FSR
MOVLW 5 ??;傳送5字節數據
MOVWF TRBUF
DIS1 MOVF 0,0??;碼段值W
MOVWF BUFF??;W嗨褪據暫存器BUFF
INCF FSR
MOVLW 8
MONWF BIT ;一字節有8位
DIS2 BSF RA, CLK ;CLK端拉成高電平 BTFSC BUFF,7
BSF RA,SDA ;數據暫存器D7位送data線(xiàn)
BTFSS BUFF,7
BCF RA,SDA
RLF BUFF ??;數據暫存器左移一位
BCF RA,CLK ;CLK端被拉成低電平,在其下降沿把data線(xiàn)上的數據采集進(jìn)去
DECFSZ BIT
GOTO DIS2 ;一字節未送完,返回
DECFSZ TRBUF
GOTO DIS1 ;三字節未送完,返回
BSF RA,CL ??;器件操作結束
BSF RA,EN
RETLW 0
51單片機相關(guān)文章:51單片機教程
評論