'**************************************************************** '* 7SegBasic.bas '* Cuenta de 0 a F en un Display de 7 Segmentos '* conectado directamente a PORTB '* Si PORTA.0 1 Va hacia arriba (De 0 de F) '* Si PORTA.0 0 Va hacia abajo (De F a 0) '**************************************************************** @ DEVICE PIC16F628,WDT_OFF,PWRT_ON,MCLR_ON,BOD_OFF,CPD_OFF,PROTECT_OFF Define OSC 4 '* Variables **************************************************** MyNUM VAR Byte '* Redefiniciones *********************************************** V7SEG Var PORTB '* Constantes *************************************************** ND0 Con %00111111 ND1 Con %00000110 ND2 Con %01011011 ND3 Con %01001111 ND4 Con %01100110 ND5 Con %01101101 ND6 Con %01111101 ND7 Con %00000111 ND8 Con %01111111 ND9 Con %01100111 NDA Con %01110111 NDB Con %01111100 NDC Con %00111001 NDD Con %01011110 NDE Con %01111001 NDF Con %01110001 NDP Con %10000000 NDW Con %00000000 Inicio: CMCON = %00000111 ' Pines PortA a Digital (No comparator) TRISA = %00001111 ' Los pines 0 a 3 del PORTA a Entrada TRISB = %00000000 ' Todos los pines del PORTB a Salida Gosub WV7SEG ' Pone a Low todos los Segmentos Pause 1500 ' Espera 1.5 Segundos antes de comenzar MyNUM = 0 Loop: if PORTA.0 = 1 then Gosub IncMyNUM else Gosub DecMyNUM Endif Gosub WV7SEG Gosub Act7SEG Gosub Pausa Goto Loop WV7SEG: V7SEG = NDW return IncMyNUM: MyNUM = MyNUM + 1 if MyNUM = 16 then MyNUM = 0 return DecMyNUM: if MyNUM = 0 then MyNUM = 16 MyNUM = MyNUM - 1 return Act7SEG SELECT Case MyNUM Case 0 V7SEG = ND0 Case 1 V7SEG = ND1 Case 2 V7SEG = ND2 Case 3 V7SEG = ND3 Case 4 V7SEG = ND4 Case 5 V7SEG = ND5 Case 6 V7SEG = ND6 Case 7 V7SEG = ND7 Case 8 V7SEG = ND8 Case 9 V7SEG = ND9 Case 10 V7SEG = NDA Case 11 V7SEG = NDB Case 12 V7SEG = NDC Case 13 V7SEG = NDD Case 14 V7SEG = NDE Case 15 V7SEG = NDF Case Else V7SEG = NDP END SELECT return Pausa: Pause 333 return End