13.11.2012 Views

Mis primeros programas en assembler - Micros Designs

Mis primeros programas en assembler - Micros Designs

Mis primeros programas en assembler - Micros Designs

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!