Здравствуйте, создадим на микросхеме 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
Схема соединения: