ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
18 мая
52582 Топик полностью
vmp (01.03.2006 14:04, просмотров: 1) ответил MDenis на Во! Полюбуйтесь на красоту:
Вот кусок кода, занимающий первое место в моём личном хит-параде. Обнаружен в клавиатуре "Русло-3" (МС7004), применявшейся в Электронике-85 и ДВК. Клавиатура была собрана на 1816ВЕ35 (i8035). Нижеприведенный кусок занимался тем, что в соответствии с принятым байтом, содержащим маску, зажигал индикаторы. Порядок бит в маске полностью соответствует порядку бит порта со светодиодами. В программе присутствует полностью аналогичный кусок кода, отвечающий за выключение светодиодов.
L5FF:	MOV	A,R7		; Включение индикаторов
;	.ORG	0600
	JB7	L604
	JMP	RetI1
L604:	JB6	RetI1
	JB5	RetI1
	JB4	L638		;20 ЛАТ
	JB3	L614		;10 СТОП-КАДР
	JB2	L61C		; 4 ФКС
	JB1	L622		; 2 КОМПОЗ
	JB0	L65C		; 1 ОЖИД
	JMP	RetI1
L614:	JB2	L626
	JB1	L62C
	JB0	L64C
	JMP	L66C
L61C:	JB1	L630
	JB0	L654
	JMP	L674
L622:	JB0	L658
	JMP	L678
L626:	JB1	L634
	JB0	L644
	JMP	L664
L62C:	JB0	L648
	JMP	L668
L630:	JB0	L650
	JMP	L670
L634:	JB0	L640
	JMP	L660
L638:	MOV	R0,#021		; адрес копии индикаторов
	MOV	A,@R0
	ORL	A,#020		; ЛАТ
	MOV	@R0,A
	JMP	RetI2
L640:	ANL	P2,#00F
	JMP	RetI2
L644:	ANL	P2,#02F
	JMP	RetI2
L648:	ANL	P2,#04F
	JMP	RetI2
L64C:	ANL	P2,#06F
	JMP	RetI2
L650:	ANL	P2,#08F
	JMP	RetI2
L654:	ANL	P2,#0AF
	JMP	RetI2
L658:	ANL	P2,#0CF
	JMP	RetI2
L65C:	ANL	P2,#0EF
	JMP	RetI2
L660:	ANL	P2,#01F
	JMP	RetI2
L664:	ANL	P2,#03F
	JMP	RetI2
L668:	ANL	P2,#05F
	JMP	RetI2
L66C:	ANL	P2,#07F
	JMP	RetI2
L670:	ANL	P2,#090
	JMP	RetI2
L674:	ANL	P2,#0BF
	JMP	RetI2
L678:	ANL	P2,#0DF
RetI2:	MOV	R2,#000	; 067A
	STOP	TCNT
RetI1:	MOV	R0,#039	; 067D
	MOV	A,@R0
	SEL	RB0
	EN	TCNTI
	EN	I
	RETR