亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? aqua ok.asm

?? 基于pic的DS1302串行實時時鐘程序
?? ASM
?? 第 1 頁 / 共 4 頁
字號:
	include <p16f877.inc>

#define E       PORTB,0
#define RW      PORTB,1
#define RS      PORTB,2

#define CLK     PORTE,0
#define IO      PORTE,1
#define RST     PORTE,2

;Sorties I2C :
;composant 0 : BLANCHE,BLEUE,1,2,3,4,TERMO,LIBRE
;composant 1 : REAC,NIV,OSMO

;Entrees I2C
BAC_BAS         equ     03h
BAC_HAUT        equ     04h
RES_BAS         equ     05h
RES_HAUT        equ     06h

;RAM
      CBLOCK  20h

	TEMP1
	TEMP2
	TEMP3
	TEMP4
	TEMP5
	DONNEE
	MENUPOS
	PB
	ADRESSE
	MAX
	FLAGS
	EXDONNEE
	HEURES
	MINUTES
	SECONDES
	SORTIES
	SORTIES1
	FINRETRO
	REMPREAC
	M_REAC
	H_REAC
	M_REMP
	EXSECONDES
	CMDMANU
	CPT
	CPT2
	CPT_MIN
	CMDMANU1
	EXDONNEE2
	CPT_TIMER
	TEMPERATURE_ENTIER
	TEMPERATURE_DECIMALE
	FIN_X

      ENDC

      CBLOCK  70H                       ; 70H - 7FH : accessible depuis toutes les banks

	W_TEMP
	STATUS_TEMP

      ENDC

;EEPROM
L_BLANCHE       equ     00h             ;heures debut - minutes debut -
L_BLEUE         equ     04h             ;heures fin - minutes fin
REACTEUR        equ     08h             ;toutes les X heures - pendant X min
REMPLISSAGE     equ     0Ah             ;toutes les X minutes - pendant X sec
POMPE1          equ     0Ch             ;
POMPE2          equ     0Fh             ;24 bits par pompe pour avoir les
POMPE3          equ     12h             ;24 heures
POMPE4          equ     15h             ;
REACTEUR2       equ     18h             ;toutes les X minutes - pendant X min
H_REMPLISS      equ     20h             ;comme L_BLANCHE
TEMP_VISEE      equ     24h             ;seuil bas - seuil haut (4 octets)

TEMPS_REBOND    equ     18h             ;X fois 6 ms
HYSTERESIS      equ     d'1'

	ORG     0003h
	goto    MAIN

;****************************************************************************
;       interruption
;****************************************************************************
	ORG     0004h

	goto    INT

;****************************************************************************
;       TEMPO == attente : 1 dans W = 0,25 ms
;****************************************************************************

TEMPO
	movwf   TEMP1
tempo2
	movlw   0ACh
	movwf   TEMP2
tempo1
	clrwdt
	decfsz  TEMP2
	goto    tempo1
	decfsz  TEMP1
	goto    tempo2
	retlw   0

;****************************************************************************
;       Pilotage LCD
; LCDCMD envoie la commande W au LCD
; LCDCHAR envoie le caractere W au LCD
;****************************************************************************

LCDCMD
	bcf     INTCON,GIE
	movwf   TEMP1
	call	LCDBUSY
	bcf     RS
	goto    lcdwr
LCDCHAR
	bcf     INTCON,GIE
	movwf   TEMP1
	call 	LCDBUSY
	bsf     RS
lcdwr
	clrwdt
	bcf	RW
	bsf     E
	movf    TEMP1,W
	movwf   PORTD
	bcf     E
	bsf     INTCON,GIE
	retlw   0

;****************************************************************************
;       LCDSTR == envoie la chaine W au LCD
;****************************************************************************

LCDSTR
	movwf   TEMP3
	movlw   HIGH(MSG)
	movwf   PCLATH
	movf    TEMP3,W
	call    MSG
	clrf    PCLATH
	andlw   0FFH
	btfsc   STATUS,Z
	retlw   0
	call    LCDCHAR
	incf    TEMP3,W
	goto    LCDSTR

;****************************************************************************
;       LCDSTR2 == envoie la chaine W au LCD
;****************************************************************************

LCDSTR2
	movwf   TEMP3
	movlw   HIGH(MSG2)
	movwf   PCLATH
	movf    TEMP3,W
	call    MSG2
	clrf    PCLATH
	andlw   0FFH
	btfsc   STATUS,Z
	retlw   0
	call    LCDCHAR
	incf    TEMP3,W
	goto    LCDSTR2

;****************************************************************************
;       LCDBUSY == attend que le LCD soit libre
;****************************************************************************

LCDBUSY
	bcf     INTCON,GIE
	bsf	STATUS,RP0
	movlw   0xFF
	movwf	TRISD
	bcf	STATUS,RP0
	bcf	RS
	bsf	RW
	bsf	E
	movf    PORTD,W
	bcf	E
	andlw   0x80
	btfss	STATUS,Z
	goto	LCDBUSY
	bcf	RW
	bsf     STATUS,RP0
	clrf	TRISD
	bcf     STATUS,RP0
	bsf     INTCON,GIE
	return

;****************************************************************************
;       LCDDEC == ecrit W en decimal
;****************************************************************************

LCDDEC
	clrf    TEMP2
	movwf   TEMP3
lcddec10
	movlw   0Ah
	subwf   TEMP3,W
	btfss   STATUS,C
	goto    decend
	movwf   TEMP3
	incf    TEMP2
	goto    lcddec10
decend
	movf    TEMP2,W
	addlw   30h
	call    LCDCHAR
	movf    TEMP3,W
	addlw   30h
	goto    LCDCHAR

;****************************************************************************
;       LCDHEX == ecrit W en Hexadecimal
;****************************************************************************

LCDHEX
	movwf   TEMP3
	swapf   TEMP3,W
	call    WRITEDIG
	movf    TEMP3,W
WRITEDIG
	andlw   0Fh
	addlw   0F6h
	btfsc   STATUS,C
	addlw   07h
	addlw   3Ah
	goto    LCDCHAR

;****************************************************************************
;       LCDSETADR == chargement de l'adresse
;****************************************************************************

LCDSETADR
	iorlw   80h
	call    LCDCMD
	retlw   0

;****************************************************************************
;       LCDINIT
;****************************************************************************

LCDINIT
	bcf	RW
	bcf	E
	bcf	RS
	movlw	80h
	call	TEMPO
	movlw   38h                     ;interface 8 bits, 2 lignes
	call	LCDCMD
	movlw   08h                     ;disp.off, curs.off, no-blink
	call	LCDCMD
	movlw	01h			;clear display		
	call	LCDCMD
	movlw   0Ch                     ;disp.on, curs.off
	call    LCDCMD
	movlw   06h                     ;auto-inc (shift-cursor)
	call	LCDCMD
	return

;****************************************************************************
;       DS1302 == lecture/ecriture ?l'adresse W du DS1302
;                                      donnee dans DONNEE
;****************************************************************************

DS1302
	bsf     RST
	movwf   TEMP1
	movwf   TEMP2
	movlw   08h
	movwf   TEMP4
	movf    TEMP1,W
	bcf     STATUS,C
adresse
	bcf     IO
	btfsc   TEMP1,0
	bsf     IO
	bsf     CLK
	clrwdt
	clrwdt
	bcf     CLK
	rrf     TEMP1
	decfsz  TEMP4
	goto    adresse
	btfss   TEMP2,0                         ;test du bit R/W
	goto    ecriture
	bsf     STATUS,RP0
	movlw   02h                             ;IO = entree
	movwf   TRISE
	bcf     STATUS,RP0
	movlw   08h
	movwf   TEMP4
	bcf     STATUS,C
	clrf    DONNEE
lecture
	rrf     DONNEE
	bsf     CLK
	clrwdt
	btfsc   IO
	bsf     DONNEE,7
	bcf     CLK
	decfsz  TEMP4
	goto    lecture
	bsf     STATUS,RP0
	clrf    TRISE
	bcf     STATUS,RP0
	bcf     RST
	return
ecriture
	movlw   08h
	movwf   TEMP4
ecrit
	bcf     IO
	btfsc   DONNEE,0
	bsf     IO
	bsf     CLK
	clrwdt
	clrwdt
	bcf     CLK
	rrf     DONNEE
	decfsz  TEMP4
	goto    ecrit
	bcf     RST
	return

;****************************************************************************
;       LISEEPROM == adresse W, donnee dans DONNEE
;****************************************************************************

LISEEPROM
	bsf     STATUS,RP1
	bcf     STATUS,RP0
	movwf   EEADR
	bsf     STATUS,RP0
	bcf     EECON1,EEPGD
	bsf     EECON1,RD
	bcf     STATUS,RP0
	movf    EEDATA,W
	bcf     STATUS,RP1
	movwf   DONNEE
	return

;****************************************************************************
;       ECRISEEPROM == adresse W, donnee dans DONNEE
;****************************************************************************

ECRISEEPROM
	bcf     INTCON,GIE
	bcf     PIR2,EEIF
	bsf     STATUS,RP1
	movwf   EEADR
	bcf     STATUS,RP1
	movf    DONNEE,W
	bsf     STATUS,RP1
	movwf   EEDATA
	bsf     STATUS,RP0
	bcf     EECON1,EEPGD
	bsf     EECON1,WREN
	movlw   55h
	movwf   EECON2
	movlw   0AAh
	movwf   EECON2
	bsf     EECON1,WR
	bcf     STATUS,RP0
	bcf     STATUS,RP1
boucle_eeprom
	clrwdt
	btfss   PIR2,EEIF
	goto    boucle_eeprom
	bsf     STATUS,RP1
	bsf     STATUS,RP0
	bcf     EECON1,WREN
	bcf     STATUS,RP0
	bcf     STATUS,RP1
	bsf     INTCON,GIE
	return

;****************************************************************************
;       PCF8574 == adresse W, donnee dans DONNEE
;****************************************************************************

PCF8574
	movwf   TEMP1
	bsf     STATUS,RP0              ;bank 1
	bsf     SSPCON2,SEN             ;start
	bcf     STATUS,RP0              ;bank 0
start
	btfss   PIR1,SSPIF
	goto    start
	movwf   SSPBUF
	bcf     PIR1,SSPIF
adr
	btfss   PIR1,SSPIF
	goto    adr
	btfsc   TEMP1,0
	goto    lect_I2C
	movf    DONNEE,W
	movwf   SSPBUF                  ;ecriture I2C
	bcf     PIR1,SSPIF
	goto    stop
lect_I2C
	bsf     STATUS,RP0
	bsf     SSPCON2,RCEN            ;reception
	bcf     STATUS,RP0
	bcf     PIR1,SSPIF
ack
	btfss   PIR1,SSPIF
	goto    ack
	movf    SSPBUF,W                ;lecture
	movwf   DONNEE
	bsf     STATUS,RP0
	bsf     SSPCON2,ACKDT
	bsf     SSPCON2,ACKEN           ;ack
	bcf     STATUS,RP0
	bcf     PIR1,SSPIF
stop
	btfss   PIR1,SSPIF
	goto    stop
	bsf     STATUS,RP0              ;bank 1
	bsf     SSPCON2,PEN             ;stop
	bcf     STATUS,RP0              ;bank 0
	bcf     PIR1,SSPIF
fin_I2C
	btfss   PIR1,SSPIF
	goto    fin_I2C
	bcf     PIR1,SSPIF
	return

;****************************************************************************
;       RELACHE == attend que la touche pressee soit relachee
;****************************************************************************

RELACHE
	clrwdt
	movlw   0FFh
	andwf   PB,W
	btfss   STATUS,Z
	goto    RELACHE
	return

;****************************************************************************
;       MENU == premiere position dans W, retour dans DONNEE
;****************************************************************************

MENU
	movwf   MENUPOS
	movwf   TEMP2
ecrit_menu
	call    RELACHE
	movlw   01h                     ;clear display
	call    LCDCMD                  ;
	movlw   7Eh
	call    LCDCHAR
	movlw   HIGH(MENUTABLE)
	movwf   PCLATH
	movf    MENUPOS,W
	movwf   DONNEE
	call    MENUTABLE
	clrf    PCLATH
	call    LCDSTR
	movlw   41h
	call    LCDSETADR
	incf    MENUPOS
	movlw   HIGH(MENUTABLE)
	movwf   PCLATH
	movf    MENUPOS,W
	call    MENUTABLE
	clrf    PCLATH
	andlw   0FFh
	btfss   STATUS,Z                ;test si fin de menu
	goto    fin_menu
	movf    TEMP2,W
	movwf   MENUPOS
	movlw   HIGH(MENUTABLE)
	movwf   PCLATH
	movf    MENUPOS,W
	call    MENUTABLE
	clrf    PCLATH
fin_menu
	call    LCDSTR
attente_menu
	clrwdt
	btfsc   PB,1                            ;suivant
	goto    ecrit_menu
	btfss   PB,2                            ;enter
	goto    attente_menu
	call    RELACHE
	return

;****************************************************************************
;       REGLHEURE == reglage de l'heure
;****************************************************************************

REGLHEURE
	clrw                                    ;WP
	movwf   DONNEE
	movlw   b'10001110'
	call    DS1302
;************** jour ******************
	movlw   32h
	movwf   MAX
	movlw   b'10000110'
	movwf   ADRESSE
	movlw   42h
	call    BOUCLEREGL
;************** mois ******************
	movlw   13h
	movwf   MAX
	movlw   b'10001000'
	movwf   ADRESSE
	movlw   47h
	call    BOUCLEREGL
;************** annee *****************
	movlw   99h
	movwf   MAX
	movlw   b'10001100'
	movwf   ADRESSE
	movlw   4Ch
	call    BOUCLEREGL
;************** heures ****************
	movlw   24h
	movwf   MAX
	movlw   b'10000100'
	movwf   ADRESSE
	movlw   52h
	call    BOUCLEREGL
;************** minutes ***************
	movlw   60h
	movwf   MAX
	movlw   b'10000010'
	movwf   ADRESSE
	movlw   58h
	call    BOUCLEREGL
	clrf    DONNEE
	movlw   b'10000000'             ;secondes ?0 + clock enable
	call    DS1302
	return


;****************************************************************************
;       BOUCLEREGL == boucle de reglage de l'heure
;                     adresse DS1302 dans ADRESSE, valeur max dans MAX
;                     texte dans W (table MSG2)
;****************************************************************************

BOUCLEREGL
	movwf   TEMP3
	movlw   40h
	call    LCDSETADR
	movf    TEMP3,W
	call    LCDSTR2
	movf    ADRESSE,W
	iorlw   01h
	call    DS1302
	movlw   48h
	call    LCDSETADR
	movlw   ":"
	call    LCDCHAR
	movlw   " "
	call    LCDCHAR
	movf    DONNEE,W
	call    LCDHEX
boucle_regl
	clrwdt
	btfsc   PB,2
	goto    fin_regl
	btfss   PB,1
	goto    boucle_regl
	movlw   4Ah
	call    LCDSETADR

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区视频二区在线观看| 国产乱码精品一区二区三区忘忧草| 欧美日韩和欧美的一区二区| av激情成人网| 成人动漫中文字幕| 成人小视频免费观看| 国产91丝袜在线播放| 成人久久久精品乱码一区二区三区 | 精品国产第一区二区三区观看体验| 欧美区视频在线观看| 国产婷婷色一区二区三区四区 | 日韩成人一级片| 精品无人区卡一卡二卡三乱码免费卡| 久久国产夜色精品鲁鲁99| 国产一区二区三区国产| 成人av小说网| 久久精品亚洲一区二区三区浴池| 婷婷夜色潮精品综合在线| 久久精品国产精品青草| 欧美丰满高潮xxxx喷水动漫| 欧美另类videos死尸| 亚洲精品写真福利| 青青国产91久久久久久| 国产成人啪免费观看软件| 91欧美激情一区二区三区成人| 色av一区二区| 欧美变态tickling挠脚心| √…a在线天堂一区| 日本伊人色综合网| 91.com在线观看| 中文字幕成人av| 日本在线观看不卡视频| 欧美人动与zoxxxx乱| 五月婷婷久久丁香| 91麻豆精品国产91久久久| 午夜影院久久久| 成人激情开心网| 最新国产精品久久精品| 亚洲成a人片综合在线| 91免费在线播放| 亚洲激情在线激情| 欧美色国产精品| 亚洲视频综合在线| 欧美午夜精品电影| 国产精品免费久久| 久久国产精品区| 久久精品男人的天堂| 国产成人av电影在线| 亚洲欧洲国产日韩| 欧美在线短视频| 国产精品污网站| 91网站最新地址| 亚洲国产成人高清精品| 91麻豆精品在线观看| 亚洲国产综合在线| 91精品国产综合久久久蜜臀图片| 久久精品国产久精国产| 国产精品久久综合| 成人黄色在线网站| 伊人色综合久久天天| 欧美一级艳片视频免费观看| 亚洲黄一区二区三区| 欧美喷潮久久久xxxxx| 欧美aaa在线| 一色屋精品亚洲香蕉网站| 精品视频一区二区不卡| 国产精品影音先锋| 亚洲精品一二三四区| 久久这里只有精品视频网| 国产成人在线视频免费播放| 亚洲色图一区二区| 日韩欧美久久久| 蜜臀99久久精品久久久久久软件| 欧美精品久久久久久久久老牛影院| 久久成人久久鬼色| 亚洲欧洲在线观看av| 欧美一区二区三区思思人| 成人国产精品免费网站| 日本不卡一二三区黄网| 亚洲综合视频在线观看| 欧美精品自拍偷拍动漫精品| 成人一二三区视频| 99精品视频在线观看| 1区2区3区欧美| 日韩精品一区二| 欧美午夜精品免费| 成人av在线一区二区三区| 日本中文在线一区| 一区二区三区四区国产精品| 欧美日韩国产区一| 99视频在线观看一区三区| 国产精品一区二区91| 日本中文字幕一区二区视频 | 国产精品自拍在线| 午夜av电影一区| 亚洲女厕所小便bbb| 91黄色免费观看| 国产99精品国产| 国产综合色精品一区二区三区| 精品久久久影院| 欧美精品xxxxbbbb| 欧美在线不卡视频| 色哟哟一区二区三区| 日韩国产高清在线| 樱桃视频在线观看一区| 亚洲欧美日韩在线播放| 亚洲天堂网中文字| 国产精品久久久久三级| 国产日韩精品一区二区三区| 色欧美乱欧美15图片| 成人伦理片在线| 9色porny自拍视频一区二区| 成人午夜精品在线| 国产91对白在线观看九色| 国产激情一区二区三区| 国产福利一区二区三区视频| 国产v综合v亚洲欧| 国产.欧美.日韩| 97久久精品人人爽人人爽蜜臀| 成人听书哪个软件好| eeuss鲁一区二区三区| 91在线小视频| 欧美亚洲日本一区| 欧美老肥妇做.爰bbww| 91精品国产日韩91久久久久久| 在线电影欧美成精品| 日韩精品中文字幕一区二区三区 | 国产高清视频一区| 国产精品自在在线| a在线播放不卡| 在线亚洲一区观看| 51午夜精品国产| 欧美精品一区视频| 中文字幕在线不卡一区二区三区| 亚洲欧美色综合| 日韩av中文在线观看| 国产美女视频一区| 91黄色免费网站| 欧美xxxxxxxxx| 国产精品久久久久久亚洲毛片| 亚洲综合激情小说| 蜜臀久久久99精品久久久久久| 国产成人精品网址| 色欧美乱欧美15图片| 91精品国产高清一区二区三区| 26uuu国产电影一区二区| 国产精品视频观看| 亚欧色一区w666天堂| 国产成人免费9x9x人网站视频| 成人一区二区三区在线观看| 欧美综合久久久| 久久久99精品久久| 午夜久久电影网| 成人免费的视频| 日韩欧美综合一区| 欧美剧情电影在线观看完整版免费励志电影| 在线不卡的av| 成人免费小视频| 久热成人在线视频| 91视频在线看| 国产日本亚洲高清| 婷婷综合另类小说色区| 制服丝袜成人动漫| 中文字幕在线一区免费| 久久精品国产精品亚洲红杏| 91福利在线看| 国产精品丝袜久久久久久app| 丝袜a∨在线一区二区三区不卡| 国产不卡视频在线播放| 日韩一区二区三区av| 亚洲理论在线观看| 波多野结衣在线一区| 日韩欧美国产一区二区在线播放 | 欧美性猛交一区二区三区精品| 久久午夜老司机| 日韩和的一区二区| 欧美午夜影院一区| 日韩理论电影院| 成人18视频日本| 国产欧美综合在线观看第十页| 免费的成人av| 欧美日韩在线电影| 一区二区欧美在线观看| 99久久er热在这里只有精品66| 久久精品一区蜜桃臀影院| 另类成人小视频在线| 91麻豆精品国产91| 亚洲成人免费在线观看| 欧美视频在线观看一区二区| 亚洲美女一区二区三区| 91色在线porny| 日韩理论电影院| 色综合色狠狠天天综合色| 国产精品美女久久久久久2018| 国产精品18久久久久久久久久久久 | 91蜜桃在线观看| 中文字幕一区二区三区色视频 | 有码一区二区三区| 99在线视频精品| 亚洲人成人一区二区在线观看|