View Single Post
Old 30-10-2005, 09:58 AM   #22
mafd_47a
Đệ tử 3 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 54
:
Chuong tirnh chinh

File tempt.asm
PHP Code:
;**********************************************************************
;                                                                     *
;    
Filename:        DS1307.asm                                        *
;    
Date:          28-10-2005                                        *
;    
File Version:  V1.0                                              *
;                                                                     *
;    
Author:        MAFD_47A                                          *
;    
Company:       BACHKHOA                                          *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    
Files requiredKet noi PIC16f88 voi DS1821 hien thi len LCD     *
;                                                                     *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    
Notes:    EN noi voi chan 7                                      *
;              
RS noi voi chan 6                                      *
;              
RW noi voi chan 3                                      *
;              
Data noi tu 3,2,1,(portAvoi D7,D6,D5,D4 cua LCD    *
;              
Su dung thach anh 4MH                                  *
;              
Noi DQ cua DS1821 voi chan RAcua VDK                 *
;                                                                     *
;**********************************************************************
;                                                                     *
;    
Upgrade:                                                         *
;                                                                     *
;**********************************************************************

    list      
p=16f88             ; list directive to define processor
    
#include <p16F88.inc>         ; processor specific variable definitions

    
errorlevel  -302              suppress message 302 from list file  _WRT_ENABLE_OFF

    __CONFIG    _CONFIG1
_CP_OFF _CCP1_RB0 _DEBUG_OFF _CPD_OFF _LVP_OFF _BODEN_OFF _MCLR_OFF _PWRTE_ON _WDT_OFF _HS_OSC   
    __CONFIG    _CONFIG2
_IESO_OFF _FCMEN_OFF

w_temp        EQU     0x71        
variable used for context saving 
status_temp   EQU     0x72        
variable used for context saving
pclath_temp   EQU     0x73          
variable used for context saving
ACC           EQU     0x74
MODE          EQU     0x75
R0            EQU     0x78
R1            EQU     0x79
R2            EQU     0x7A
R3            EQU     0x7B
R4            EQU     0x7C
R5            EQU     0x7D
R6            EQU     0x7E
R7            EQU     0x7F
EN            EQU     H
'0007'
RS            EQU     H'0006'
RW            EQU     H'0003'
P7            EQU     H'0007'
START_RAM     EQU     0x60
I2C           EQU     0x00


PORT_DAT      EQU     PORTA
TRIS_DAT      EQU     TRISA
PORT_CON      EQU     PORTB
TRIS_CON      EQU     TRISB
DQ            EQU     0x04
        cblock 0x20
               IOBYTE
               TMP0                      
Address 0x23
               COUNT                     
Keep track of bits
               PICMSB                    
Store the MSB
               PICLSB                    
Store the LSB
               PDBYTE                    
Presence Detect Pulse
               VITRI                     
Dung de luu bien cua vi tri con tro trong LCD
               S100                      
Gia tri hang 100
               S10                       
Gia tri hang chuc
               S1                        
Gia tri hang don vi
        endc

      ORG 0x0000
        
goto MAIN

      ORG 0x0004

        movwf   w_temp            
save off current W register contents
        movf    STATUS
,w          move STATUS register into W register
        movwf    status_temp       
save off contents of STATUS register
        movf    PCLATH
,W          move PCLATH register into W register
        movwf    pclath_temp       
save off contents of PCLATH register
;==============================================================================
     
;==============================================================================
          
movf    pclath_temp,w     retrieve copy of PCLATH register
        movwf    PCLATH            
restore pre-isr PCLATH register contents
        movf    status_temp
,w     retrieve copy of STATUS register
        movwf    STATUS            
restore pre-isr STATUS register contents
        swapf   w_temp
,f
        swapf   w_temp
,w          restore pre-isr W register contents
        retfie                    
; return from interrupt

       
include <1W_16F6X.inc>  
MAIN
        BANKSEL ANSEL
        CLRF    ANSEL
        BANKSEL PORTA
        CALL    INIT_LCD   
                
                                                                         
;====================================================================

        
WRITE_SENTENCE 0x03,GOTOLINE1,MYDATA,WRITE_TEXT,VITRI
        CALL    INIT_TEMP
        MOVLW   0x08
        MOVWF   VITRI
        
AGAIN   CALL    DELAY255
        CALL    DELAY255
        CALL    DELAY255
        CALL    DELAY255
        CALL    GET_TEMP
        INCF    IOBYTE
,F
        CALL    WRITE_TEMP 
               
        
GOTO    AGAIN 
;====================================================================


MYDATA  ADDWF   PCL,F
        RETLW   
'T'
        
RETLW   'E'
        
RETLW   'M'
        
RETLW   'P'
        
RETLW   ':'
        
RETLW   ' '
        
RETLW   0x00

INIT_TEMP
        CALL    OW_RESET
        MOVLW   0x01
        CALL    DSTXBYTE
        MOVLW   .40
        CALL    DSTXBYTE
        CALL    OW_RESET
        MOVLW   0x02
        CALL    DSTXBYTE
        MOVLW   .10
        CALL    DSTXBYTE
        CALL    OW_RESET
        MOVLW   0x0C
        CALL    DSTXBYTE
        MOVLW   
B'01000000'
        
CALL    DSTXBYTE
        CALL    OW_RESET
        MOVLW   0xEE
        CALL    DSTXBYTE
        
RETURN
       
        
GET_TEMP

        CALL    OW_RESET
        MOVLW   0xAA
        CALL    DSTXBYTE
        CALL    DSRXBYTE         
GIA TRI NHIET DO DA DUOC LUU VAO IOBYTE
        
RETURN

WRITE_TEMP 
        MOVF    IOBYTE
,W
        CALL    CONVERT_BCD
        MOVF    R2
,W             Luu cac gia tri r2,r1,r0 vao cac bien s100,s10,s1
        MOVWF   S100
        MOVF    R1
,W
        MOVWF   S10
        MOVF    R0
,W
        MOVWF   S1
        MOVF    VITRI
,W
        CALL    GOTOLINE1
        MOVF    S100
,W
        ADDLW   0x00
        BTFSC   STATUS
,Z
        MOVLW   0xE0
        ADDLW   0x30
        CALL    WRITE_TEXT
        MOVF    S10
,W
        ADDLW   0x30
        CALL    WRITE_TEXT
        MOVF    S1
,W
        ADDLW   0x30
        CALL    WRITE_TEXT
        RETLW   0x00

CONVERT_BCD                       
In WoutR2,R1,R0  hang tram chudon vi )
        
MOVWF   ACC               Luu vao trong ACC lam thanh ghi dem
        CLRF    R0                
Xoa cac thanh ghi de luu RA DANG gia tri out
        CLRF    R1
        CLRF    R2
        MOVLW   .100
BCD_100                           
Voi so hang chuc
        INCF    R2
,F
        SUBWF   ACC
,F
        BTFSC   STATUS
,C
        
GOTO    BCD_100        
        DECF    R2
,F
        ADDWF   ACC
,F
        MOVLW   .10
BCD_10                           
Voi so hang chuc
        INCF    R1
,F
        SUBWF   ACC
,F
        BTFSC   STATUS
,C
        
GOTO    BCD_10        
        DECF    R1
,F
        ADDWF   ACC
,W
        MOVWF   R0
        
RETURN


DELAY255    movlw    0xff        ;delay 255 mS
        
goto    D0
DELAY100    movlw    d
'100'        ;delay 100mS
        
goto    D0
DELAY50        movlw    d
'50'        ;delay 50mS
        
goto    D0
DELAY20        movlw    d
'20'        ;delay 20mS
        
goto    D0
DELAY5        movlw    0x05        
;delay 5.000 ms (4 MHz clock)
D0        movwf    R2
D1        movlw    0xC7            
;delay 1mS
        movwf    R3
        movlw    0x01
        movwf    R4
Delay_0
        decfsz    R3
f
        
goto    $+2
        decfsz    R4
f
        
goto    Delay_0

        decfsz    R2    
,f
        
goto    D1
        retlw    0x00


        END 
( Module ve LCD cac ban tham khao o tren bai viet ve DS1307 )
Việc mổ sẻ các chương trình con ở trên sẽ mất rất nhiều thời gian, chắc tôi ko đủ sức làm được. Thắc mắc chỗ nào mọi người cứ post lên chúng ta cùng giải quyết

Còn một điều nữa chương trình này là bản V1.0 tức là bản đầu tiên, tôi chưa chú trọng đến giao diện hay việc tối ưu code chương trình, Mục đích của các bản V1.0 ở đây là làm sao chay được mà thôi. Với chương trình này các bạn hoàn toàn có thể nâng cấp chỉnh sửa nó lên

Have a good time
File Kèm Theo
File Type: pdf DS1821.pdf (424.4 KB, 137 lần tải)
File Type: pdf app2420.pdf (114.6 KB, 131 lần tải)
mafd_47a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn