Pic16f630: Семисегментный индикатор ( часть 4 игральный кубик)

Здравствуйте, создадим на микросхеме Pic16f630 игральный кубик.
При нажатии на кнопку на семисегментном индикаторе будет появляться число от 1 до 6 на пару секунд, а после опять пропадать и так бесконечно.

Предыдущие части:
Pic16f630: Семисегментный индикатор показываем цифры по порядку
Pic16f630: Семисегментный индикатор (часть 2 добавляем кнопку)
Pic16f630: Семисегментный индикатор (часть 3 задержка регулируемая через программу)

Скачать файлы asm,hex,inc:


Скачать файлы.

Код на ассемблере:

#include <P16F630.INC>
 __CONFIG (_MCLRE_OFF & _CP_OFF & _WDT_OFF & _INTRC_OSC_NOCLKOUT)  ;Internal osc.


 c1 equ 20
c2 equ 21


 org 0

Start
 
 BCF   STATUS,RP0  ; select bank 0
 CLRF  PORTA       ; porta=0
 movlw b'11111111'
 movwf CMCON 
 BSF   STATUS,RP0  ; select bank 1
 movlw b'00100000'
 movwf TRISA
 CLRF  TRISC       ; make PORTC pins all output
 BCF   STATUS,RP0  ; select bank 0
 movlw b'00000000'
 movwf  PORTC       ; set portc pins equal to 0

loop
 movlw b'00100100'
 movwf PORTC
movlw b'00000000'
 movwf PORTA
call game
nop
 movlw b'00011110'
 movwf PORTC
movlw b'00000100'
 movwf PORTA
call game
nop
 movlw b'00110110'
 movwf PORTC
movlw b'00000100'
 movwf PORTA
call game
nop
 movlw b'00100101'
 movwf PORTC
movlw b'00000100'
 movwf PORTA
call game
nop
 movlw b'00110011'
 movwf PORTC
movlw b'00000100'
 movwf PORTA
call game
nop
 movlw b'00111011'
 movwf PORTC
movlw b'00000100'
 movwf PORTA
call game
nop
 goto loop

game
 btfss PORTA,RA5 
 call de2
 return

delay1
 movlw b'11111111'
 bcf STATUS,RP0
 movwf c2
lc0
 movlw b'11111111'
 movwf c1
lc1
 decfsz c1,1
 goto lc1
 decfsz c2,1
 goto lc0
 return

de2
 call delay1
call delay1
call delay1
call delay1
call delay1
call delay1
call delay1
call delay1
call delay1
call delay1
call delay1
call delay1
call delay1
call delay1
return
 

 end

Схема соединения:

Добавить комментарий