欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2159|回復(fù): 1
收起左側(cè)

單片機(jī)匯編利用pcf8591讀取光敏數(shù)據(jù),顯示不正確

[復(fù)制鏈接]
ID:481844 發(fā)表于 2019-8-2 22:15 | 顯示全部樓層 |閱讀模式
剛學(xué)的匯編,想用匯編寫一個利用液晶顯示光敏數(shù)值的程序,液晶顯示部分的代碼沒什么問題正常顯示,燒錄到板子上顯示的好像是一些隨機(jī)的數(shù),pcf8591的讀取程序有點(diǎn)問題,應(yīng)該是發(fā)送一個字節(jié)數(shù)據(jù)或者接受數(shù)據(jù)部分的問題,但是我又看不出來是哪里的問題,所以想問讓各位大佬幫忙看一下,謝謝

        CMD EQU 40H
        DAT EQU 41H
        SDA EQU P2.0
        SCL EQU P2.1
        ORG 0H
        JMP START
        ORG 23H
        JMP SERVER
START:                 //初始化
        MOV SCON,#50H
        MOV TMOD,#20H
        MOV TH1,#0FAH
        MOV TL1,#0FAH
        SETB TR1
        SETB EA
        SETB ES
        MOV DPTR,#SHOW
        MOV CMD,#38H
        LCALL WRITE_CMD
        MOV CMD,#0CH
        LCALL WRITE_CMD
        MOV CMD,#01H
        LCALL WRITE_CMD
        MOV CMD,#06H
        LCALL WRITE_CMD
LOOP:                   //主函數(shù)
        LCALL SHOW_1602
        LCALL READ_ADD
        JMP LOOP
SHOW_1602:            //液晶顯示
        MOV CMD,#80H
        LCALL WRITE_CMD
        MOV A,R5
        MOV B,#10
        DIV AB
        MOV R4,B
        MOV B,#10
        DIV AB       
        MOVC A,@A+DPTR
        MOV DAT,A
        LCALL WRITE_DAT
        MOV A,B
        MOVC A,@A+DPTR
        MOV DAT,A
        LCALL WRITE_DAT
        MOV A,R4
        MOVC A,@A+DPTR
        MOV DAT,A
        LCALL WRITE_DAT       
        RET
READ_BUSY:               //1602讀取忙綠狀態(tài)
        MOV P0,#0FFH
        CLR P1.0
        SETB P1.1
        SETB P2.5
        MOV R2,P0
        CLR P2.5
        MOV A,#80H
        ANL A,R2
        JNZ READ_BUSY
        RET
WRITE_CMD:              //輸入指令
        LCALL READ_BUSY
        CLR P1.0
        CLR P1.1
        MOV P0,CMD
        SETB P2.5
        CLR P2.5
        RET
WRITE_DAT:              //輸入數(shù)據(jù)
        LCALL READ_BUSY
        SETB P1.0
        CLR P1.1
        MOV P0,DAT
        SETB P2.5
        CLR P2.5
        RET
START1:               //iic通訊起始信號
        SETB SCL
        SETB SDA
        LCALL DELAY_5US
        CLR SDA
        LCALL DELAY_5US
        RET
STOP:                //停止信號
        CLR SDA
        SETB SCL
        LCALL DELAY_5US
        SETB SDA
        LCALL DELAY_5US
        RET
ACK:                 //應(yīng)答信號
        SETB SCL
        LCALL DELAY_5US
        CLR SCL
        RET
WRITE_BYTE:          //寫入一個字節(jié)指令
        MOV R6,#8
        MOV A,R7
D4:       
        RLC A
        MOV SDA,C
       
        CLR SCL
        LCALL DELAY_5US
        SETB SCL
        LCALL DELAY_5US
        DJNZ R6,D4
        CLR SCL
        SETB SDA
        RET
READ_BYTE:                //讀取一個字節(jié)數(shù)據(jù)
        MOV R6,#8
D5:SETB SCL
        LCALL DELAY_5US
        MOV C,SDA
        RLC A
        CLR SCL
        LCALL DELAY_5US       
        MOV R5,A
        DJNZ R6,D5

        CLR SCL
        SETB SDA
        RET
READ_ADD:                //讀取數(shù)據(jù)
        LCALL START1
        MOV R7,#90H+0
        LCALL WRITE_BYTE
        LCALL ACK
        MOV R7,#0
        LCALL WRITE_BYTE
        LCALL ACK
        LCALL START1
        MOV R7,#90H+1
        LCALL WRITE_BYTE
        LCALL ACK
        LCALL READ_BYTE
        LCALL STOP
        RET
SHOW:         
DB 30H
DB 31H
DB 32H
DB 33H
DB 34H
DB 35H
DB 36H
DB 37H
DB 38H
DB 39H
DELAY_1MS:
        MOV R0,#2
D1: MOV R1,#250
        DJNZ R1,$
        DJNZ R0,D1
        RET
DELAY_5US:
        NOP
        NOP
        NOP
        RET
SERVER:
        END

回復(fù)

使用道具 舉報(bào)

ID:235200 發(fā)表于 2019-8-3 10:06 | 顯示全部樓層
建議用PROTEUS畫出圖來,用KEIL+PROTEUS仿真調(diào)試檢查,學(xué)會了仿真調(diào)試,什么問題能能解決了
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表