返回信息流LIST P=16F877
INCLUDE"P16F877.INC"
TOWRITE EQU 55H
NUM EQU 56H
BYTENUM EQU 57H
TOREAD EQU 69H
SHOW1 EQU 75H
SHOW2 EQU 76H
SHOW3 EQU 77H
STATUS EQU 03H
FSR EQU 04H
TMR0 EQU 01H ;初始化
PCL EQU 02H
INTCON EQU 0BH
RBPU EQU 7
TMR1L EQU 0EH
TMR1H EQU 0FH
TRISB EQU 86H
OPTION_REG EQU 81H
MAO EQU 50H
PORTB EQU 06H
PORTC EQU 07H
TRISC EQU 87H
PORTA EQU 05H
TRISA EQU 85H
PORTD EQU 08H
TRISD EQU 88H
PORTE EQU 09H
TRISE EQU 89H
RP0 EQU 05H
ADCON1 EQU 9FH
SCLK EQU 00H
DIO EQU 01H
RET EQU 02H
INDF EQU 00H
CBLOCK 20H
M
N
COUNTCLOCK1
COUNTCLOCK2
COUNTCLOCK3
XIUZHENG
DATA1
KEYDATA
ZHI ;33H
ENDC
;//////////////////////////////////宏定义////////////////////////////////
T1 MACRO
BSF STATUS,RP0
ENDM
T0 MACRO
BCF STATUS,RP0
ENDM
ENABLE MACRO
MOVWF PORTD
BSF PORTE,1
NOP
NOP
NOP
NOP
NOP
BCF PORTE,1
ENDM
PRO18B20 MACRO
T1
MOVLW 0FFH
MOVWF TRISA
T0
ENDM
CLRA MACRO
T1
CLRF TRISA
T0
ENDM
CLRFPORT MACRO
CLRF TRISC
CLRF TRISD
CLRF TRISE
ENDM
ORG 0000H
GOTO MAIN
;//////////////////////////////////////////////////////////////////////////////////////////
ORG 0005H ;????????????????
MAIN
NOP
T1
CLRFPORT
MOVLW 0FFH
MOVWF TRISB
MOVLW 0FFH
MOVWF PORTA
T0
CLRF SHOW1
CLRF SHOW2
CLRF SHOW3
CALL INTLCD
CALL IN18B20
ZHU
CALL GETWEN
CALL SHOW18B20
GOTO ZHU
;/////////////////////////////////////////////////////////////////////////////////
;///////////////////////////////液晶屏幕初始化/////////////////////////////
INTLCD T1
MOVLW 06H
MOVWF ADCON1
T0
BCF PORTE,0
CALL DELAY15MS
MOVLW 30H
ENABLE
CALL DELAY4MS
MOVLW 30H
ENABLE
CALL DELAY100US
MOVLW 30H
ENABLE
CALL DELAY40US
MOVLW 38H
ENABLE
CALL DELAY40US
MOVLW 08H
ENABLE
CALL DELAY40US
MOVLW 01H
ENABLE
CALL DELAY1_64MS
MOVLW 06H
ENABLE
CALL DELAY40US
MOVLW 0CH
ENABLE
CALL DELAY40US
RETURN
;///////////////////////////////////////////////////////////////////////////
IN18B20
CLRA
BCF PORTA,0
CALL DELAY500US
PRO18B20
CALL DELAY70US
CHECK18B20
BTFSC PORTA,0 ;如果初始化成功,则在15到60MS
GOTO CHECK18B20 ;之间会由DS18B20返回低电平,由
;此判断它的存在,但是不能无限的等待
CALL DELAY500US
MOVLW 0CCH
MOVWF TOWRITE
CALL WRITE18B20
CALL DELAY60US
RETURN
;////////////////////////////////////////////////////////////////////////////////////////////////
WRITE18B20
MOVLW 09H
MOVWF NUM
BITCOUNT DECFSZ NUM,1
GOTO WRITEDIAN
GOTO RE18B20
WRITEDIAN BTFSC TOWRITE,0
GOTO WRITEH
GOTO WRITEL
WRITEL
T1
CLRF TRISA
T0
BCF PORTA,0
CALL DELAY60US
PRO18B20
RRF TOWRITE,1
CALL DELAY60US
GOTO BITCOUNT
WRITEH
T1
CLRF TRISA
T0
BCF PORTA,0
NOP
NOP
NOP
PRO18B20
CALL DELAY60US
RRF TOWRITE,1
CALL DELAY60US
GOTO BITCOUNT
RE18B20 RETURN
;/////////////////////////////////////////////////////////////////////////////////////////////
GETWEN
T1
MOVLW 07H
MOVWF ADCON1
NOP
NOP
T0
CALL IN18B20
MOVLW 44H
MOVWF TOWRITE
CALL WRITE18B20
CALL DELAY100MS
CALL IN18B20
MOVLW 0BEH
MOVWF TOWRITE
CALL WRITE18B20
CALL READ18B20
RETURN
;///////////////////////////////////////////////////////////////////////////////////////////////
READ18B20
MOVLW 58H
MOVWF FSR
MOVLW 09H
MOVWF BYTENUM
BYTECOUNT
MOVLW 08H
MOVWF NUM
READBIT MOVF PORTA,0
MOVWF TOREAD
MOVWF INDF
RRF TOREAD,1
CLRA
BCF PORTA,0
NOP
PRO18B20
NOP
NOP
NOP
NOP
NOP
NOP
NOP
;MOVF PORTA,0
;MOVWF TOREAD
BTFSS TOREAD,0
BCF TOREAD,7
BSF TOREAD,7
GOTO SAVEBIT
SAVEBIT CALL DELAY60US
DECFSZ NUM,1
GOTO READBIT
INCF FSR,1
DECFSZ BYTENUM,1
GOTO BYTECOUNT
GOTO STEP
STEP CLRF SHOW1
CLRF SHOW2
CLRF SHOW3
SWAPF 58H,0
MOVWF 70H
MOVWF M
ANDLW 0FH
MOVWF 71H
SWAPF 59H,0
MOVWF 72H
MOVWF N
ANDLW 0F0H
IORWF 71H,0
MOVWF SHOW3
BTFSS SHOW3,7 ;通过第七位判断正负位
GOTO GAO
INCF SHOW1,1
DECF SHOW3,1
COMF SHOW3,1
GAO MOVLW D'10'
SUBWF SHOW3,0
BTFSS STATUS,C
RETURN
MOVWF SHOW3
INCF SHOW2,1
GOTO GAO
RETURN
;////////////////////////////////////////////////////////////////////////////////////////////
SHOW18B20
MOVLW 30H
ADDWF SHOW2,1
ADDWF SHOW3,1
;CALL INTLCD
BTFSC SHOW1,0
GOTO SHOWFU
GOTO SHOWZHENG
SHOWFU
BSF PORTE,0
MOVLW 2DH
MOVWF PORTD
ENABLE
CALL DELAY4MS
BCF PORTE,0
MOVLW 0FH
ENABLE
CALL DELAY4MS
SHOWZHENG
BCF PORTE,0
MOVLW 81H
MOVWF PORTD
ENABLE
CALL DELAY4MS
BSF PORTE,0
MOVF SHOW2,0
MOVWF PORTD
ENABLE
CALL DELAY4MS
BCF PORTE,0
MOVLW 82H
MOVWF PORTD
ENABLE
CALL DELAY4MS
BSF PORTE,0
MOVLW SHOW3
MOVWF PORTD
ENABLE
CALL DELAY4MS
BCF PORTE,0
MOVLW 83H
MOVWF PORTD
ENABLE
CALL DELAY4MS
BSF PORTE,0
MOVLW B'11011111'
MOVWF PORTD
ENABLE
CALL DELAY4MS
BCF PORTE,0
MOVLW 84H
MOVWF PORTD
ENABLE
CALL DELAY4MS
BSF PORTE,0
MOVLW B'01000011'
MOVWF PORTD
ENABLE
CALL DELAY4MS
;BCF PORTE,0
;MOVLW 0FH
;ENABLE
;CALL DELAY4MS
RETURN
;/////////////////////////////////////////////////////////////////
;//////////////////////////////各种各种各种TMD延时///////////////////////////
DELAY1S MOVLW D'133'
MOVWF COUNTCLOCK1
MOVLW D'10'
MOVWF COUNTCLOCK3
LOOP11 MOVLW D'249'
MOVWF COUNTCLOCK2
LOOP12 DECFSZ COUNTCLOCK2,1
GOTO LOOP12
DECFSZ COUNTCLOCK1,1
GOTO LOOP11
LOOP3 MOVLW D'133'
MOVWF COUNTCLOCK1
LOOPNOP DECFSZ XIUZHENG,1
GOTO LOOPNOP
MOVLW D'37'
MOVWF XIUZHENG
DECFSZ COUNTCLOCK3,1
GOTO LOOP11
RETURN
;//////////////////////////////
DELAY15MS MOVLW D'101'
MOVWF COUNTCLOCK1
LOOP151 MOVLW D'49'
MOVWF COUNTCLOCK2
LOOP152 DECFSZ COUNTCLOCK2,1
GOTO LOOP152
DECFSZ COUNTCLOCK1,1
GOTO LOOP151
RETURN
;//////////////////////////////
DELAY10MS MOVLW D'13'
MOVWF COUNTCLOCK1
LOOP101 MOVLW 0FFH
MOVWF COUNTCLOCK2
LOOP102 DECFSZ COUNTCLOCK2,1
GOTO LOOP102
DECFSZ COUNTCLOCK1,1
GOTO LOOP101
RETURN
;//////////////////////////////
DELAY4MS MOVLW D'101'
MOVWF COUNTCLOCK1
LOOP41 MOVLW D'13'
MOVWF COUNTCLOCK2
LOOP42 DECFSZ COUNTCLOCK2,1
GOTO LOOP42
DECFSZ COUNTCLOCK1,1
GOTO LOOP41
RETURN
;//////////////////////////////
DELAY100US MOVLW D'33'
MOVWF COUNTCLOCK1
LOOP100 DECFSZ COUNTCLOCK1,1
GOTO LOOP100
RETURN
;//////////////////////////////
DELAY40US MOVLW D'13'
MOVWF COUNTCLOCK1
LOOP40 DECFSZ COUNTCLOCK1,1
GOTO LOOP40
RETURN
;//////////////////////////////
DELAY10US MOVLW D'2'
MOVWF COUNTCLOCK1
LOOP10 NOP
DECFSZ COUNTCLOCK1,1
GOTO LOOP10
RETURN
;//////////////////////////////
DELAY1_64MS MOVLW D'3'
MOVWF COUNTCLOCK1
LOOP641 MOVLW D'136'
MOVWF COUNTCLOCK2
LOOP642 NOP
NOP
NOP
DECFSZ COUNTCLOCK2,1
GOTO LOOP642
DECFSZ COUNTCLOCK1,1
GOTO LOOP641
RETURN
;//////////////////////////////////
DELAY60US
MOVLW D'29'
MOVWF COUNTCLOCK1
LOOP60 DECFSZ COUNTCLOCK1,1
GOTO LOOP60
RETURN
;/////////////////////////////////////////////////////////////////////////////
DELAY100MS MOVLW D'180'
MOVWF COUNTCLOCK1
LOOP100MS1 MOVLW D'185'
MOVWF COUNTCLOCK2
LOOP100MS2 DECFSZ COUNTCLOCK2,1
GOTO LOOP100MS2
DECFSZ COUNTCLOCK1,1
GOTO LOOP100MS1
RETURN
DELAY70US
MOVLW D'29'
MOVWF COUNTCLOCK1
LOOP70 DECFSZ COUNTCLOCK1,1
GOTO LOOP60
RETURN
DELAY500US MOVLW D'165'
MOVWF COUNTCLOCK1
LOOP500
DECFSZ COUNTCLOCK1,1
GOTO LOOP500
RETURN
;//////////////////////////////
END
这是我的一个小程序。是18B20的测温度,现在不知道是写入还是读出的问题,单步后觉得是读有问题,希望学姐学长能帮忙看看呢
这是一条镜像帖。来源:北邮人论坛 / circuit / #17838同步于 2011/7/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Circuit机器人发帖
希望牛人帮帮忙,请你吃饭啊
xt092515
2011/7/11镜像同步8 回复
订阅后,新回复会通过你的通知中心匿名送达。
8 条回复
【 在 xt092515 的大作中提到: 】
: 对了,前面的定义是还有一些程序的,就没有删了 呢,应该没事的
: --
给你一行行看程序太费时间。把我当年的单片机小学期资料给你吧。也是做18B20的参考一下就行了,学长不是纵容你们抄作业~~
附件(23.3KB)
汇编程序不会编
sorry。
【 在 xt092515 (枫的性格) 的大作中提到: 】
: LIST P=16F877
: INCLUDE"P16F877.INC"
: TOWRITE EQU 55H
: ...................
【 在 wugui 的大作中提到: 】
: : 对了,前面的定义是还有一些程序的,就没有删了 呢,应该没事的
: : --
: 给你一行行看程序太费时间。把我当年的单片机小学期资料给你吧。也是做18B20的参考一下就行了,学长不是纵容你们抄作业~~
: ...................
想抄都不行呢,呜呜呜呜,出现好多error.......还看不懂呢,现在在努力看,要努力看呢
【 在 wugui 的大作中提到: 】
: : 对了,前面的定义是还有一些程序的,就没有删了 呢,应该没事的
: : --
: 给你一行行看程序太费时间。把我当年的单片机小学期资料给你吧。也是做18B20的参考一下就行了,学长不是纵容你们抄作业~~
: ...................
是我太笨了吗?看了整个程序,是做温度的吗,全是音乐的啊。。。。
【 在 xt092515 的大作中提到: 】
: : : 对了,前面的定义是还有一些程序的,就没有删了 呢,应该没事的
: : : --
: : 给你一行行看程序太费时间。把我当年的单片机小学期资料给你吧。也是做18B20的参考一下就行了,学长不是纵容你们抄作业~~
: ...................
这次应该没错了
附件(8.3KB)
赞!看汇编代码都能看出音乐来
【 在 xt092515 的大作中提到: 】
: : : 对了,前面的定义是还有一些程序的,就没有删了 呢,应该没事的
: : : --
: : 给你一行行看程序太费时间。把我当年的单片机小学期资料给你吧。也是做18B20的参考一下就行了,学长不是纵容你们抄作业~~
: ...................
【 在 teamo 的大作中提到: 】
: 赞!看汇编代码都能看出音乐来
: 【 在 xt092515 的大作中提到: 】
: : : : 对了,前面的定义是还有一些程序的,就没有删了 呢,应该没事的
: ...................
要是没记错的话应该就是某个频率的方波