; test13.asm ; ; Programme de test du 8031 N° 13 ; Test de la liaison I2C avec DS1621 ; (C) CHAMOUARD 1998 ; (Libre de droits pour utilisation non ; commerciale et à vos propres risques) ; ; Matériel requis : ; carte 8031 base 1, programme chargé en 2000h ; afficheur LCD 2*16 aux adresses spécifiées ci-dessous ; DS1621 relié au bus I2C ; bus I2C relié au 8031 avec :SCL=P1.4, SDA=P1.5, IT(I2C)=P3.3=/IT1(8031) ; Bibliothèques requises : ; libasc.asm decodages ASCII ; liblcd.asm afficheur ; libi2c.asm i2c ; libi2cus.asm bibliothèques i2c (partie DS1621) ; Sortie : ; affichage de la température en hexa grossière (demi degré) et fine ; exemple 1380:1385 pour 19,5° grossière et 19,52° fin word LcdCmdReadAdd, #E002h word LcdCmdWriteAdd, #E000h word LcdDataReadAdd, #E003h word LcdDataWriteAdd, #E001h bit I2CIT, IT1 bit I2CEX, EX1 bit I2CSCL, P1.4 bit I2CSDA, P1.5 byte I2CDS1621Write, #10010000b byte I2CDS1621Read, #10010001b ORG 2000h ; Debut du programme ljmp Begin Begin: mov SP,#0fh ; Debut de pile en 10h lcall LcdInit lcall LcdCurseurOn lcall I2CInit lcall DS1621Init Boucle: lcall DS1621Trigger Boucle2: lcall DS1621MesOK jc Boucle2 ; Verifie si mesure prete lcall LcdHome ; Lecture temperature directe dans le DS1621 ; Ecriture en hexa lcall DS1621ReadTemp xch A,B lcall LcdWriteByte ; Affichage du resultat (partie entière) mov A,B lcall LcdWriteByte ; Affichage du resultat (partie frationnaire) mov A,#':' lcall LcdWriteChar ; Lecture affinee de la temperature ; Ecriture en hexa lcall DS1621ReadTemp2 push ACC mov A,B lcall LcdWriteByte pop ACC lcall LcdWriteByte ljmp Boucle INCLUDE lib\liblcd.asm INCLUDE lib\libasc.asm INCLUDE lib\libi2c.asm INCLUDE lib\libi2cus.asm