View Single Post
Old 24-10-2005, 02:05 AM   #6
mafd_47a
Đệ tử 3 túi
 
Tham gia ngày: Sep 2005
Bài gửi: 54
:
Chào các bạn ở bài viết này mình muốn đề cập đến sử dụng I2C trong F88

+ I2C là chuẩn giao tiếp của hang Philp và hiện đang đựoc sử dụng rất rộng rãi, ưu điểm tốc độ truyền nhanh, chỉ cần 2 dây SDA, SCL nhưng chỉ truyền trong phạm vi ngắn , Tốc độ đường truyền vào khoảng 100Kb => 400Kb ……
Các bạn có thể tham khảo tại :
http://users.pandora.be/educypedia/electronics/I2C.htm
http://www.semiconductors.philips.co...protocols/i2c/

+ Trong 16F88 có hỗ trợ I2C nhưng chỉ hỗ trợ các chế độ Slave Mode, do đó để có thể giao tiếp với các IC như DS1307 ( hoạt động ở chế dộ Slave mode ) ta phải tự xây dựng các giao tiếp chế độ Master Mode

+ Về tài liệu giao tiếp I2C trong PIC các bạn có thể tham khảo vidu của Ngài Nigel ( VD6 ) Project dưới đây tôi cũng dựa theo VD đó

+ Để các bạn hình dung được hơn về I2C mình Up lên cho các bạn Project mình vừa mới hoàn thành xong. Giao tiếp DS1307 với 16F88..
Các đặc điểm của chương trình:
Dây nối SDA, SCL được nối với RB1,RB4 của RTC, SQW/OUT của RTC được nối với RB0 ( chân này được sử dụng để tạo ngắt.ngoài )
Cơ chế hoạt động: cho RTC hoạt động với mức tạo xung ra ở chân SQW 1Hz, xung tín hiêu được đưa vào RB0 tạo ngăt, cứ mỗi khi có ngắt xảy ra thì Pic sẽ đọc dữ liệu từ RTC đưa ra màn hình LCD.

Trong chương trình ko sử dụng nut bắm để điều chinh thời gian , ko hiển thị ngày tháng năm, các bạn hoàn toàn có thể đưa vào để nâng cấp chương trình. Rât mong được nhận các chương trình từ các bạn

Phan 1
PHP Code:
;**********************************************************************
;                                                                     *
;    
Filename:        DS1307.asm                                        *
;    
Date:          20-10-2005                                        *
;    
File Version:  V1.0                                              *
;                                                                     *
;    
Author:        MAFD_47A                                            *
;    
Company:       BACHKHOA                                          *
;                                                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    
Files requiredHien thi thoi gian dung DS1307                   *
;                    
Ket noi va hien thi dung LCD                     *
;                    
Su dung ngat ngoai de thuc hien bao thoi diem    *
;                    
Nhap du lieu                                     *
;                                                                     *
;**********************************************************************
;                                                                     *
;    
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                                  *
;              
Chan SDASCL cua DS1307 ket noi voi SDASCL cua VDK  *
;              
Chan PTout duoc noi voi chan RB0 tao ngat)           *
;                                                                     *
;**********************************************************************
;                                                                     *
;    
Upgrade:  HIEN THI GIOPHUTGIAY LEN MAN HINH LCD              *
;              
SU DUNG NGAT DE NHAN BIET THOI GIAN (dung ngat RB0)    *
;                                                                     *
;                                                                     *
;**********************************************************************

    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


;***** VARIABLE DEFINITIONS
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
RO            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


PORT_DAT      EQU     PORTA
TRIS_DAT      EQU     TRISA
PORT_CON      EQU     PORTB
TRIS_CON      EQU     TRISB
SCL           EQU     0x04
SDA           EQU     0x01
I2C_PORT      Equ        PORTB
I2C_TRIS      Equ      TRISB


        CBLOCK     0x20            
;start of general purpose registers
            count
            Flags
            Flags2
            Adr_Lo            
RTC memory address to be accessed
            Adr_Hi
            DAT_VAL
            _N
            InputByte        
byte read from RTC is stored in this register
            OutputByte        
used for holding byte to be output to RTC
            I2Cflags        
flag bit register
            RAM_SEC      
            RAM_MIN       
            RAM_HOU       
            RAM_DAY       
            RAM_DAT       
            RAM_MON       
            RAM_YEA       
         endc

ErrFlag        Equ    0x00
StartFlag    Equ    0x01            
;flags used for received bit
One            Equ    0x02
Zero        Equ    0x03

Chip_Read     Equ    0xD1            
;RTC address values
Chip_Write    Equ    0xD0

      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
;==============================================================================
        
CLRF    Adr_Lo
        CALL    Read_RTC
        MOVWF   RAM_SEC
        INCF    Adr_Lo
        CALL    Read_RTC
        MOVWF   RAM_MIN
        INCF    Adr_Lo
        CALL    Read_RTC
        MOVWF   RAM_HOU
        CALL    CONVERT
        CALL    WRITE_TIMER_LCD
        BCF     INTCON
,1
;==============================================================================
          
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


MAIN
        BANKSEL ANSEL
        CLRF    ANSEL
        BANKSEL PORTA
        CALL    INIT_LCD
Kiem tra trang thai ban dau co nen nhap so lieu hay ko
        MOVLW   0x07
        MOVWF   Adr_Lo
        CALL    Read_RTC
        SUBLW   0x10
        BTFSC   STATUS
,Z
        
GOTO    NEXT_MAIN
Ham INIT Timer 
        MOVLW   0x00
        MOVWF   Adr_Lo
        CALL    Write_RTC
        MOVLW   0x07
        MOVWF   Adr_Lo
        MOVLW   0x10
        CALL    Write_RTC
        MOVLW   0x01
        MOVWF   Adr_Lo
        MOVLW   0x25
        CALL    Write_RTC
        MOVLW   0x02
        MOVWF   Adr_Lo
        MOVLW   0x00
        CALL    Write_RTC
NEXT_MAIN
        BANKSEL TRISB
        BSF     TRISB
,0
        BANKSEL PORTB
        MOVLW   
B'11010000'
        
MOVWF   INTCON

        
goto    $ 
mafd_47a vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn