Tìm kiếm
Latest topics
Most Viewed Topics
Most active topics
Giao Tiếp DS1337 + PIC Viết Bằng ASM - Tham Khảo
Trang 1 trong tổng số 1 trang
Giao Tiếp DS1337 + PIC Viết Bằng ASM - Tham Khảo
Dùng để tham khảo
- Code:
;-------------------------------------------
; DO AN MON HOC 1 - DV06
; FILE NAME: DAMH1.asm
; VERSION:1.1
; DE TAI: DUNG PIC 16F887A TAO LICH VAN NIEN KY THUAT SO. XUAT RA LCD 16X2
; NGUOI THUC HIEN: NGUYEN DUC TRI
; NGAY HOAN THANH: //2009
;---------------------------------------------
; GIAO VIEN HUONG DAN: NGUYEN QUYNH ANH
; NGAY KIEM TRA: //2009
;-------------------------------------------
;ERSION 1.1:
; KHOI DEM THOI GIAN: DUNG DS1307(RTC).
; KHOI XU LY: PIC 16F887A
; KHOI HIEN THI: LCD 16X2
;-------------------------------------------
; TAKE NOTE:
;14.10.2009: KHOI TAO CAC CHUONG TRINH CON I2C NHUNG CHUA TINH TOAN VE TOC DO BAUD CHO CRYSTAL:20MHZ
; ct con read write chua giai thix duoc vua cho.
;15.10.2009: DA KHOI TAO XONG PHAN HIEN THI LCD; CHAY DEBUG RA KET QUA TOT, CHAY THUC TE:THAT BAI
; NGHI NGO PHAN TAO TRE XUNG TRONG MOI LAN GUI DI
; TH1: SET EN LEN ROI TAT LIEN DOI 160US
; TH2: SET EN LEN DE 160 US TAT
;16.10.2009: DA HOAN THANH XONG HIEN XUAT TU RAM NOI PIC RA LCD :D
;18.10: DA HOAN THANH CHUONG TRINH GHI DU KIEU VAO DS1307
; CT READ TU DS CHUA CHAY; DU DOAN LOI: DONG BO CLK CANH LEN VOI DU LIEU DOC
;
;
;-------------------------------------------
PROCESSOR 16f877a
INCLUDE <p16f877a.inc>
__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF
;--------------------------------------------
#DEFINE E PORTD,7
#DEFINE RS PORTD,6
ADDRESS equ 0x20
ACC equ 0x21
RAM_SEC equ 0x22
RAM_MIN equ 0x23
RAM_HOU equ 0x24
RAM_DAY equ 0x25
RAM_DAT equ 0x26
RAM_MON equ 0x27
RAM_YEA equ 0x28
W_SAVE equ 0x29
STATUS_SAVE equ 0x2A
PCLATH_SAVE equ 0x2B
FSR_SAVE equ 0x2C
DELAY_REG1 EQU 0X2D
DELAY_REG2 EQU 0X2E
DELAY_REG3 EQU 0X2F
HCHUC EQU 0X30
HDV EQU 0X31
MSB EQU 0X32
LSB EQU 0X33
;----------------------------------------------
;-----------------------------------------------
ORG 0X0004 ; NGAT NGOAI THEO XUNG CLK CUA DS1307 DE XAC DINH THOI GIAN TRUY XUAT DU LIEU TRONG DS1307
GOTO NGAT
NGAT
;--------------------------------
; PHAN LUU LAI CAC GIA TRI VI KHI NGAT RAT CO THE CAC GIA TRI TREN SE BI THAY DOI
MOVLW W_SAVE ; LUU W RA THANH GHI NGOAI
MOVF STATUS,W ; DOI DO W VA STATUS
MOVLW STATUS_SAVE ; LUU W LUC DO DANG CHUA GIA TRI STATUS
MOVF PCLATH,W
MOVLW PCLATH_SAVE ; LUU PCLATH RA NGOAI
MOVF FSR,W ; DOI CHO
MOVLW FSR_SAVE ; LUU FSR RA NGOAI
;---------------------------------
; PHAN BAT DAU CHUONG TRINH NGAT
BTFSS INTCON,1 ; BIT KIEM TRA COI CO XAY RA NGAT BR0
GOTO NEXT_INTERRUPT ; NEU GIA TRI CUA HAM SS TREN TRA VE O (KO CO NGAT RB0) THI THUC HIEN NGAT TIEP THEO
CALL READ_RTC
CALL TRANSFER_LCD
BCF INTCON,1 ; XOA CO NGAT RB0 DE KHOI DONG NGAT TIEP THEO
NEXT_INTERRUPT
;---------------------------------
;PHAN KHOI PHUC LAI CAC DU LIEU TRONG THANH GHI
MOVF PCLATH_SAVE,W
MOVLW PCLATH
MOVF STATUS_SAVE,W
MOVLW STATUS
MOVF FSR_SAVE,W
MOVLW FSR
MOVF W_SAVE,W
RETFIE
;----------------------------------------
;THAN CHUONG TRINH CHINH
;-----------------------------------------
ORG 0X0000
GOTO START
ORG 0X0040
START
BANKSEL INTCON
CLRF INTCON ; XOA THANH DIEU KHIEN NGAT
; BCF STATUS,RP1
; BCF STATUS,RP0
; MOVLW 0X0F ;KHOI TAO PORT B NHAP
; MOVWF TRISB
CALL DELAY_15MS ;TAO TRE DE LCD KHOI DONG
CLRF RAM_SEC
CLRF RAM_MIN
CLRF RAM_HOU
CLRF RAM_DAT
CLRF RAM_MON
CLRF RAM_YEA
CALL INIT_I2C ;THIET LAP CHUAN I2C
CALL INIT_LCD ;THIET LAP LCD
CALL MOD_CONTROLBYTE
; BANKSEL OPTION_REG
; MOVLW 0X00
; MOVWF OPTION_REG ; DAT CHE DO PULL-UP+ KICH XUNG CANH XUONG
; BSF INTCON,4 ; BAT BIT DK NGAT NGOAI
; BSF INTCON,3 ; BAT BIT DK NGAT NGOAI
; BSF INTCON,7 ; BAT BIT DK NGAT TOAN CUC
;
; CALL READ_RTC
; CALL TRANSFER_LCD
CALL STARTBit ; Gui bit Start
MOVLW 0xd0 ; Load CONTROL BYTE ( cho viec xuat du lieu )
CALL WRITE_I2C
MOVlw 0x00 ; Load ADDRESS Byte vao W
CALL WRITE_I2C
CALL STOPBit ; Qua trinh restart
CALL STARTBit
MOVLW 0xd1
; Set bit 0 = 1 bao cho slave biet qua trinh doc lan sau
CALL WRITE_I2C
BSF STATUS,RP0
BTFSC SSPSTAT,2 ; kiem tra bit R/W
GOTO $-1
BANKSEL SSPCON2
BSF SSPCON2,RCEN ; Cho phep RECEIVE Mode (I2C ) ; loi o cho nay day
CALL WaitMSSP
BCF STATUS,RP0
BCF PIR1,SSPIF
CALL NACKBit ; Phat bit NACKBit ket thuc qua trinh nhan
CALL STOPBit
BANKSEL SSPBUF ;
MOVF SSPBUF,W ; Luu gia tri doc duoc tu EEPROM vao thanh ghi W
GOTO $
;------------------------------------------------
MOD_CONTROLBYTE ; THIET LAP GIA TRI CUA BIT CONTROL TRONG DS1307
CALL STARTBit
MOVLW 0XD0
CALL WRITE_I2C
MOVLW 0X00 ; vi tri so 0
CALL WRITE_I2C
MOVLW 0X49 ; khoi tao gia tri giay
CALL WRITE_I2C
MOVLW 0X05 ; khoi tao gia tri phut
CALL WRITE_I2C
MOVLW 0X01 ; khoi tao gia tri gio
CALL WRITE_I2C
MOVLW 0X02 ; khoi tao gia tri thu
CALL WRITE_I2C
MOVLW 0X01 ; khoi tao gia tri ngay
CALL WRITE_I2C
MOVLW 0X06 ; khoi tao gia tri thang
CALL WRITE_I2C
MOVLW 0X91 ; khoi tao gia tri nam
CALL WRITE_I2C
MOVLW 0x10 ; khoi tao gia tri BIT CONTROL (xung SQW 1HZ)
CALL WRITE_I2C
CALL STOPBit
RETLW 0X00
;------------------------------------------------
READ_RTC ;CHUONG TRINH DOC DU LIEU TRONG RAM CUA DS1307 DUA VAO O NHO PIC
CALL STARTBit ; GOI BIT START DE BAT DAU
MOVLW 0XD0 ; DUA VAO W GIA TRI CUA CONTROL BITS DS1307
CALL WRITE_I2C ; GUI DEN RTC
MOVLW 0X00 ; DUA VAO W DIA CHI CUA O NHO BAT DAU CUA DS1307 DE XUAT DU LIEU
CALL WRITE_I2C
; CALL STOPBit ; GOI BIT STOP DE KET THUC
CALL RESTARTBit ; GOI BIT START DE BAT DAU LAI
MOVLW 0XD1 ; DUA VAO W DIA CHI CUA DS1307 NHUNG CO SET BIT 0 CHUAN BI CHO QUA TRINH DOC
CALL WRITE_I2C
; BAT DAU QUA TRINH DOC DU LIEU TU TRONG RAM CUA DS1307
CALL READ_I2C ; DOC DU LIEU TU O NHO 0X00 CUA DS1307 TUC LA GIAY
MOVWF RAM_SEC ; LUU VAO THANH GHI GIAY
CALL READ_I2C ; TA TIEP TUC DOC TIEP VI BO NHO O DEM SE TU DONG TANG LEN 1 SAU MOI LAN XUAT DU LIEU VA CHI DUNG KHI GAP BITSTOP
MOVWF RAM_MIN
CALL READ_I2C
MOVWF RAM_HOU
CALL READ_I2C
MOVWF RAM_DAY
CALL READ_I2C
MOVWF RAM_DAT
CALL READ_I2C
MOVWF RAM_MON
; DOI VOI PHAN NAM DO LA PHAN TRUY XUAT CUOI CUNG TUC FAI THEM NACK VAO KHI PHAN HOI LAI CHO SLAVE NEN TA PHAI VIET LAI CT CON READ_I2C
BSF STATUS,RP0 ; chon bank 1 vi sspstat nam o do
BTFSC SSPSTAT,2 ; KIEM TRA BIT THU 2(R/W) COI PIC DA XONG PHAN TRUYEN NHAN TRUOC DO DA XONG CHUA
GOTO $-1
BANKSEL SSPCON2
BSF SSPCON2,RCEN ; BIT RCEN LA BIT CHO PHEP NHAN DU LIEU O MASTER MODE I2C
CALL WaitMSSP ; DOI CHO DEN KHI PIC NHAN XONG DU LIEU
CALL NACKBit ; GUI BIT NACK XAC NHAN DEN SLAVE LA DA KET THUC PHAN DOC
BCF STATUS,RP0
BCF STATUS,RP1
MOVF SSPBUF,W ; LUU DU LIEU QUA W
CALL STOPBit
MOVWF RAM_YEA
RETLW 0X00
;---------------------------------------------
INIT_I2C ; CHUONG TRINH CON KHOI TAO GIAO TIEP I2C CHUAN MASTER CUA PIC
BANKSEL SSPCON ; chon MSSP che do MASTER MODE
MOVLW B'00101000' ; Thiet lap MSSP cho chan PORTC o che do I2C
MOVWF SSPCON ; SSPEN, SSPM BITS
BANKSEL SSPSTAT ; Thiet lap che do chuan cua toc do baud ( SMP= 1 )
MOVLW B'10000000' ; Toc do chuan la 100Kb
MOVWF SSPSTAT
BANKSEL SSPADD ; Thiet lap toc do duong truyen
MOVLW 0x28 ; Tinh toan gia tri cho thiet lap toc do
MOVWF SSPADD
RETLW 0x00
;--------------------
READ_I2C ; PIC NHAN DU LIEU TU DS1307 (OUT:W)
BSF STATUS,RP0 ; chon bank 1 vi sspstat nam o do
BTFSC SSPSTAT,2 ; KIEM TRA BIT THU 2(R/W) COI PIC DA XONG PHAN TRUYEN NHAN TRUOC DO DA XONG CHUA
GOTO $-1
BSF SSPCON2,RCEN ; BIT RCEN LA BIT CHO PHEP NHAN DU LIEU O MASTER MODE I2C
CALL WaitMSSP ; DOI CHO DEN KHI PIC NHAN XONG DU LIEU
BCF STATUS,RP0
BCF PIR1,SSPIF
CALL ACKBit ; GUI BIT ACK XAC NHAN DEN SLAVE
BCF STATUS,RP0
BCF STATUS,RP1
MOVF SSPBUF,W ; LUU DU LIEU QUA W
RETLW 0X00 ;RETURN ; KHONG HIEU VI SAO?
;-------------------
WRITE_I2C ;PIC PHAT DU LIEU DEN DS1307 (IN: W)
BCF STATUS,RP0
BCF STATUS,RP1
MOVWF SSPBUF
CALL WaitMSSP
RETLW 0X00
;----------------
STARTBit ; CT CON PHAT BIT START
BANKSEL TRISC
MOVLW 0X00
MOVWF TRISC
BANKSEL PORTC
BSF PORTC,3
BSF PORTC,4
BSF STATUS,RP0
BSF SSPCON2,SEN ; Gui bit start
CALL WaitMSSP
RETLW 0x00
;-----------------
STOPBit
BSF STATUS,RP0
BSF SSPCON2,PEN ; GUI BIT STOP
CALL WaitMSSP
RETLW 0X00
;-----------------
RESTARTBit
BSF STATUS,RP0
BSF SSPCON2,RSEN ; GUI BIT RESTART
CALL WaitMSSP
RETLW 0x00
;-----------------
ACKBit
BSF STATUS,RP0
BCF SSPCON2,ACKDT ; CHON GUI ACK (ACKDT=0 LA ACK =1 LA NACK)
BSF SSPCON2, ACKEN
CALL WaitMSSP
RETLW 0X00
;-------------------
NACKBit
BSF STATUS,RP0
BSF SSPCON2,ACKDT
BSF SSPCON2,ACKEN
CALL WaitMSSP
RETLW 0X00
;--------------------
WaitMSSP ; CT CON KIEM TRA SU KET THUC CUA 1 HOAT DONG TRUYEN
BCF STATUS,RP0
BCF STATUS,RP1
BTFSS PIR1,SSPIF ; Kiem tra trang thai co
GOTO $-1 ; Chua hoan thanh
BCF PIR1,SSPIF ; Da hoan thanh cong viec, luc nay co the chuyen sang hoat dong moi
RETLW 0X00
;---------------
;------------------------------------------------
TRANSFER_LCD ; CHUYEN CAC GIA TRI THOI GIAN VAO LCD
MOVLW 0X80 ; EP CON TRO VE DAU DONG 1
CALL WR_INS
MOVLW 0X01 ; CLR MAN HINH
CALL WR_INS
MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI
CALL WR_INS ;GUI LENH DI
MOVLW 0X14
CALL WR_INS
MOVF RAM_HOU,W ; GUI GIA TRI HOUR RA LCD
CALL MA_HOA_SO
MOVLW 0X3A ; DAU HAI CHAM
CALL WR_DATA
MOVF RAM_MIN,W ; GUI GIA TRI MIN RA LCD
CALL MA_HOA_SO
MOVLW 0X3A ; DAU HAI CHAM
CALL WR_DATA
MOVF RAM_SEC,W ; GUI GIA TRI SECOND RA LCD
CALL MA_HOA_SO
MOVLW 0XC0 ; EM CON TRO VE DONG DONG THU 2
CALL WR_INS ; GUI LENH DI
MOVLW 0X14
CALL WR_INS
MOVLW 0X14 ;DICH CON TRO QUA BEN PHAI
CALL WR_INS ;GUI LENH DI
MOVF RAM_DAT,W ; GUI GIA TRI DATE RA LCD
CALL MA_HOA_SO
MOVLW 0X2F ; DAU GACH CHEO
CALL WR_DATA
MOVF RAM_MON,W ; GUI GIA TRI MONTH RA LCD
CALL MA_HOA_SO
MOVLW 0X2F ; DAU GACH CHEO
CALL WR_DATA
MOVF RAM_YEA,W ; GUI GIA TRI YEAR RA LCD
CALL MA_HOA_SO
RETLW 0X00
;-----------------------------------------------
MA_HOA_SO ; IN:W OUT:LCD
CALL TACHSO ; TACH THANH CHUC VA DON VI
MOVF HCHUC,W
ADDLW 0X30
CALL WR_DATA
MOVF HDV,W
ADDLW 0X30
CALL WR_DATA
RETLW 0X00
;-------------------------------------------------
INIT_LCD ;CHUONG TRINH KHOI DONG LCD
BANKSEL TRISD ; KHOI TAO PORT D XUAT LCD
MOVLW B'00000000'
MOVWF TRISD
BANKSEL PORTD
MOVLW 0X00
NOP
NOP
MOVWF PORTD
;------------KHOI DONG LCD
BSF E ;PHAT LENH RONG DAU TIEN
BCF E
MOVLW b'00000011' ;PHAT LENH RESET 3 LAN
MOVWF PORTD
CALL DELAY_160US ;DELAY DE DOI CAC CHAN PROT D NHAN DU DU LIEU
BSF E
BCF E
CALL DELAY_5MS ; DOI LCD NHAN XONG
MOVLW b'00000011'
MOVWF PORTD
CALL DELAY_160US
BSF E
BCF E
CALL DELAY_160US ; DOI LCD NHAN XONG
MOVLW b'00000011'
MOVWF PORTD
CALL DELAY_160US
BSF E ; Send 4 bits
BCF E
;---------------TRUYEN LENH KHOI DONG
MOVLW b'00000010' ; DAT CHE DO TRUYEN 4 BIT
MOVWF PORTD
CALL DELAY_160US
BSF E
BCF E
CALL DELAY_160US
MOVLW 0X28 ; THIET LAP GUI NHAN 4 BIT; 2DONG 5X7
CALL WR_INS
MOVLW 0X0C ; BAT HIEN THI TAT CON TRO
CALL WR_INS
MOVLW 0X06 ; EP CON TRO VE DAU DONG 1
CALL WR_INS
MOVLW 0X01 ; CLR MAN HINH
CALL WR_INS
RETLW 0X00
;---------------------------------------
WR_INS: ; CT CON XUAT LENH RA LCD IN:W
CALL CHANGE_NIBLE ; CT CON DUNG TACH TRONG SO CAO RA PORTD
MOVF MSB,W
MOVWF PORTD
CALL DELAY_160US ; Send 4 bits MSB
BSF E ; SET BIT EN CHO TRUYEN NHAN
BCF E
CALL DELAY_5MS
MOVF LSB,W ; SEND 4 BIT LSB
MOVWF PORTD
CALL DELAY_160US
BSF E
BCF E
CALL DELAY_5MS
RETLW 0X00
;------------------------------------
WR_DATA: ; IN:W
CALL CHANGE_NIBLE ; CT CON DUNG TACH TRONG SO CAO RA PORTD
MOVF MSB,0
MOVWF PORTD ; Send 4 bits MSB
CALL DELAY_160US
BSF RS ; BAT CO PHAT DU LIEU
BSF E ; BAT CO EN
BCF E
CALL DELAY_160US
MOVF LSB,0
MOVWF PORTD ; Send 4 bits LSB
CALL DELAY_160US
BSF RS
BSF E
BCF E
BCF RS
CALL DELAY_160US
RETLW 0X00
;-------------------------------------
DELAY_15MS
MOVLW d'20'
MOVWF DELAY_REG1
L1
MOVLW 0XC7
MOVWF DELAY_REG2
MOVLW 0X01
MOVWF DELAY_REG3
LL1
DECFSZ DELAY_REG2,1
GOTO $+2
DECFSZ DELAY_REG3,1
GOTO LL1
DECFSZ DELAY_REG1,1
GOTO L1
RETLW 0X00
;---------------
DELAY_5MS
MOVLW d'5'
MOVWF DELAY_REG1
Q1
MOVLW 0XC7
MOVWF DELAY_REG2
MOVLW 0X01
MOVWF DELAY_REG3
QQ1
DECFSZ DELAY_REG2,1
GOTO $+2
DECFSZ DELAY_REG3,1
GOTO QQ1
DECFSZ DELAY_REG1,1
GOTO Q1
RETLW 0X00
;---------------
DELAY_160US
MOVLW 0X20
MOVWF DELAY_REG2
MOVLW 0X01
MOVWF DELAY_REG3
WW1
DECFSZ DELAY_REG2,1
GOTO $+2
DECFSZ DELAY_REG3,1
GOTO WW1
RETLW 0X00
;------------------------------------------------
TACHSO ;TACH HANG CHUC VOI DON VI IN:W OUT:HCHUC, HDV
MOVWF HCHUC
ANDLW 0X0F
MOVWF HDV
SWAPF HCHUC,0
ANDLW 0X0F
MOVWF HCHUC
RETLW 0X00
;------------------------------------------------
CHANGE_NIBLE ;TACH TRONG SO CAO VA THAP
MOVWF MSB
ANDLW 0X0F
MOVWF LSB
SWAPF MSB,0
ANDLW 0X0F
MOVWF MSB
RETLW 0X00
end
hoangnhanpro- Admin
- Họ & Tên : Phạm Hoàng Nhân
Giới tính :
Cung Hoàng Đạo :
Con Giáp :
Tuổi (Age) : 32
Ngày Sinh (Birthday) : 17/05/1991
Ngày Gia Nhập : 04/10/2011
Đến Từ : Hoàng Nhân Pro
Sở Thích : Điện Tử - Tin Học
Công Việc : Đang Thất Nghiệp
Tổng số bài gửi : 575
Điểm (Point) : 6553
Danh Tiếng (Reputation) : 4
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|
2nd March 2013, 22:37 by luuvu_01
» cFosSpeed 8.03 build 2010 - Đăng ký bằng key thành công
21st January 2013, 15:25 by hoangnhanpro
» Share công cụ chỉnh sửa file MANIFEST.MF online
8th January 2013, 13:35 by hoangnhanpro
» Share công cụ tạo Logo Team + Tết Online cực đẹp
8th January 2013, 13:35 by hoangnhanpro
» [hot] SMS chúc mừng năm mới 2013, sms chuc nam moi, tin nhan chuc mung nam moi
28th December 2012, 01:31 by hoangnhanpro
» Opera Mini Mod Pro v4.21.25 Hack Phone and No Hack Phone
26th December 2012, 17:02 by hoangnhanpro
» [Hot] Những Bộ SMS Noel 2012 Cực Hot - SMS Xep Hinh Chuc Ngay Noel
13th December 2012, 04:54 by hoangnhanpro
» KIS 2012-2013 TRIAL RESET (Easy) - Trial Reset KIS 2012-2013 dễ dàng nhất
13th December 2012, 04:50 by hoangnhanpro
» [TESTED-002] Lịch vạn niên LCD (full code)
13th December 2012, 04:38 by hoangnhanpro
» [TESTED-001] Điều khiển thiết bị điện qua máy tính
13th December 2012, 04:34 by hoangnhanpro
» [Thông báo] Diễn đàn đang được cũng cố và sửa chữa lại các link bị lỗi....
13th December 2012, 04:08 by hoangnhanpro
» Share Zip ảnh Hot Girl 185 Pic 31,6 MB + Link URL
10th December 2012, 12:10 by hoangnhanpro
» Tuyển tập Girl xinh Kute - Part 18
10th December 2012, 11:41 by hoangnhanpro
» [VIP] Đồ án [DA094] Lịch vạn niên hiển thị LCD
25th November 2012, 19:38 by hoangnhanpro
» [VIP] Đồ án [DA093] Ứng dụng RF điều khiển Robot
25th November 2012, 19:36 by hoangnhanpro