Пн фев 19, 2018 15:07:59
;
;
#DEFINE FLAG_DIG REG.FL,0
;
#DEFINE SB0 PORTA,0
#DEFINE SB1 PORTA,1
;
;
INV MACRO REG,BIT1
MOVLW 1<<BIT1
XORWF REG,F
ENDM
CBLOCK 0x20 ;BANK0
REG.FL
REG_A,REG_B
REG_IND
ENDC
;
CBLOCK 0x70 ;ALL BANK
REG.AL
REZ.L,REZ.H
Q.REG.L
ENDC
;
ORG 0x00
INIT
;
;
;
;
MAIN
BTFSC SB2
GOTO M1.1
;
MOVF PORTA,W
ANDLW 03H
MOVWF REG_A
;
M1.1 BTFSC SB3
GOTO M1.2
;
MOVF PORTA,W
ANDLW 03H
MOVWF REG_B
;
M1.2
BTFSC SB4
GOTO M2.0
; REG_A - REG_B
MOVF REG_B,W
SUBWF REG_A,W
BCF LED_RED
BTFSS STATUS,C
BSF LED_RED
BTFSS STATUS,C
SUBLW .0
;
MOVWF REG_IND
;
M2.0
MOVF REG_IND,W
MOVWF REG.AL
CALL BIN2BCD8
;
INV FLAG_DIG
BTFSC FLAG_DIG
GOTO M2.1
;
MOVF REZ.L,W
ANDLW 0FH
BCF P.DIG1
CALL SET.SEG
MOVWF PORTB
BSF P.DIG0
GOTO M2.0.OUT
;
M2.1
SWAPF REZ.L,W
ANDLW 0FH
;
BCF P.DIG0
CALL SET.SEG
MOVWF PORTB
BSF P.DIG1
;GOTO M2.0.OUT
;
;
M2.0.OUT
;
;
;
GOTO MAIN
;
;
;
SET.SEG
ANDWF PCL,F
;
RETLW SEG_0
RETLW SEG_1
RETLW SEG_2
RETLW SEG_3
RETLW SEG_4
RETLW SEG_5
RETLW SEG_6
RETLW SEG_7
RETLW SEG_8
RETLW SEG_9
;
;
;
BIN2BCD8
;in: REG.AL - BIN
;out: REZ.H, REZ.L - BCD (PACKED)
;
MOVLW .8 ; Q.BIT IN
MOVWF Q.REG.L
;
CLRF REZ.H
CLRF REZ.L
GOTO B2B1
;
ADJDEC MOVLW .51
ADDWF REZ.H,F
ADDWF REZ.L,F
;
MOVLW .3
BTFSS REZ.H,3
SUBWF REZ.H,F
BTFSS REZ.L,3
SUBWF REZ.L,F
;
MOVLW .48
BTFSS REZ.H,7
SUBWF REZ.H,F
BTFSS REZ.L,7
SUBWF REZ.L,F
;
B2B1 RLF REG.AL,F
RLF REZ.L,F
RLF REZ.H,F
DECFSZ Q.REG.L,F
GOTO ADJDEC
RETURN
;
;
END
Вт фев 20, 2018 06:43:19
Ср фев 21, 2018 14:42:29
Ср фев 21, 2018 14:53:17
Пт фев 23, 2018 10:05:48
Пт фев 23, 2018 10:51:41
Пт фев 23, 2018 11:31:07
Пт фев 23, 2018 11:35:39
Пт фев 23, 2018 12:09:59
Пт фев 23, 2018 13:34:28
Вт фев 27, 2018 16:44:37
Вт фев 27, 2018 16:52:49
Вт фев 27, 2018 17:47:23
Вт фев 27, 2018 17:48:57
Вт фев 27, 2018 18:23:37
Как вывести числа от 0 до 9 в семисегментном индикаторе?
list p=PIC16C84, r=dec, st=OFF ;Enter device name
#include <p16f84.inc>
;
__CONFIG _XT_OSC & _CP_OFF & _WDT_OFF & _PWRTE_OFF
// port b
#define seg_a (1<<7)
#define seg_b (1<<6)
#define seg_c (1<<5)
#define seg_d (1<<4)
#define seg_e (1<<3)
#define seg_f (1<<2)
#define seg_g (1<<1)
#define let_1 seg_b | seg_c
#define let_2 seg_a | seg_b | seg_d | seg_e | seg_g
#define let_3 seg_a | seg_b | seg_c | seg_d | seg_g
#define let_4 seg_b | seg_c | seg_f | seg_g
#define let_5 seg_a | seg_c | seg_d | seg_f | seg_g
#define let_6 seg_c | seg_d | seg_e | seg_f | seg_g
#define let_7 seg_a | seg_b | seg_c
#define let_8 seg_a | seg_b | seg_c | seg_d | seg_e | seg_f | seg_g
#define let_9 seg_a | seg_b | seg_c | seg_f | seg_g
#define let_0 seg_a | seg_b | seg_c | seg_d | seg_e | seg_f
bsf status, rp0
movlw 0x0f
movwf trisa
clrf trisb
bcf status, rp0
loop:
movf porta, w
call segm_tab
movwf portb
goto loop
segm_tab:
andlw 0x0f
addwf pcl
retlw let_0
retlw let_1
retlw let_2
retlw let_3
retlw let_4
retlw let_5
retlw let_6
retlw let_7
retlw let_8
retlw let_9
retlw 0
retlw 0
retlw 0
retlw 0
retlw 0
retlw 0
end
Вт мар 27, 2018 21:03:06
Ср мар 28, 2018 05:10:02
Ср мар 28, 2018 13:44:26
Ср мар 28, 2018 14:03:16
Чт мар 29, 2018 07:06:01