Mis primeros programas en assembler - Micros Designs
Mis primeros programas en assembler - Micros Designs
Mis primeros programas en assembler - Micros Designs
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
67. bcf RS232_Dato,7 ; Ahora lee el pin. En principio supone que<br />
es 0.<br />
68. btfsc RS232_RX ; ¿Realm<strong>en</strong>te es cero?<br />
69. bsf RS232_Dato,7 ; No, pues cambia a "1".<br />
70. rrf RS232_Dato,1 ; Rotamos para recibir el sigui<strong>en</strong>te bit.-<br />
71. call Demora_100us ; Los sigui<strong>en</strong>tes bits los lee un periodo<br />
más tarde.<br />
72. decfsz RS232_ContBits,1 ; Comprueba que es el último bit.<br />
73. goto LeeBit ; No es el último, pasa a leer el<br />
sigui<strong>en</strong>te.<br />
74. bcf RS232_Dato,7 ; Ahora lee ultimo bit <strong>en</strong>viado.Supone que<br />
es 0.<br />
75. btfsc RS232_RX ; ¿Realm<strong>en</strong>te es cero?<br />
76. bsf RS232_Dato,7 ; No, pues cambia a "1".<br />
77. call Demora_100us ; Espera un tiempo igual al bit de Stop.<br />
78. bsf Kbhit ; Se indica que ha llegado dato.-<br />
79. Fin_ISR ; El dato recibido se<br />
guarda <strong>en</strong> <br />
80. bcf INTCON,INTF ; Limpiamos bandera.-<br />
81. retfie ; Salimos de interrupción.-<br />
82. ;.................................................<br />
83. ;**** Rutinas ****<br />
84. ;*** Configura las líneas de salida y <strong>en</strong>trada ****<br />
85. RS232_Puerto<br />
86. bsf STATUS,RP0<br />
87. bsf RS232_RX ; Esta línea se configura como<br />
<strong>en</strong>trada.<br />
88. bcf RS232_TX ; Esta línea se configura como<br />
salida.<br />
89. clrf OPTION_REG ; Config. Por flanco Desc<strong>en</strong>d<strong>en</strong>te<br />
Interrupcion RB0.-<br />
90. bcf STATUS,RP0<br />
91. bsf RS232_TX ; Condicion de no transmision de<br />
datos.-<br />
92. movlw b'10010000' ; Habilitamos GIE y INTE<br />
(interrupción por RB0)<br />
93. movwf INTCON<br />
94. bcf Kbhit ; Borramos bandera.-<br />
95. return<br />
96.<br />
97. ;**** Se <strong>en</strong>via Dato ****+<br />
98. ;------------------------------------------------------------------------<br />
-----------------<br />
99. ; 1º se <strong>en</strong>via el LSB, luego se va rotando a la derecha y se <strong>en</strong>vian los<br />
bits de mayor peso.-<br />
100. ;------------------------------------------------------------------------<br />
-----------------<br />
101. RS232_EnviaDato<br />
102. movwf RS232_Dato ; Guarda el cont<strong>en</strong>ido del byte a<br />
transmitir.<br />
103. movlw d'8' ; Número de bits a transmitir.<br />
104. movwf RS232_ContBits<br />
105. bcf RS232_TX ; Se g<strong>en</strong>era bit de Start.<br />
106. call Demora_100us<br />
107. EnviaBit ; Comi<strong>en</strong>za a <strong>en</strong>viar datos.<br />
108. btfss RS232_Dato,0 ; ¿Es un "1" el bit a transmitir?<br />
109. bcf RS232_TX ; No, pues <strong>en</strong>vía un "0".<br />
110. btfsc RS232_Dato,0 ; ¿Es un "1" el bit a transmitir?<br />
111. bsf RS232_TX ; Si, Transmite un "1".<br />
112. rrf RS232_Dato,1 ; Rota para <strong>en</strong>via sigui<strong>en</strong>te bit.-<br />
Autor: Suky Mail: inf.pic.suky@live.com.ar Web: www.micros-designs.com.ar