ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
2 июля
74040 Топик полностью
POV (15.11.2006 13:33, просмотров: 1) ответил Programmer на Непонятна цель...
Платка управления кучей клапанов... с компа дается команды включить клапан n-ый. Некрасиво жестко привязываться к архитектуре. вот как было для другой платки на асм и как я хочу сделать сейчас: <c>
k1	bit p1.4	 
k2	bit p1.5	 
k3	bit p1.6	 
k4	bit p1.7	 
k5	bit p3.0
k6	bit p3.1
k7	bit p3.2	
				
; таблица пинов для управления ключами
tbportsswitch:	db 0, k1, k2, k3, k4, k5, k6, k7

SWITCH_ON:
	mov a,par1
	mov dptr,#tbportsswitch
	movc a,@a+dptr
	mov b,#8
	div ab
	inc b		; остаток 1...8

	cjne a,#0x10,sw00
	mov a,#10000000b
	rl a
	djnz b,$-1
	orl a,p0
	mov p0,a
	ret
sw00:	cjne a,#0x12,sw01
	mov a,#10000000b
	rl a
	djnz b,$-1
	orl a,p1
	mov p1,a
	ret
sw01:	cjne a,#0x14,sw02
	mov a,#10000000b
	rl a
	djnz b,$-1
	orl a,p2
	mov p2,a
	ret
sw02:	cjne a,#0x16,sw03
	mov a,#10000000b
	rl a
	djnz b,$-1
	orl a,p3
	mov p3,a
sw03:	ret
</c>
Может и не идеал реализации, но мне показалось удобным. А на С я смог сделать только: switch (bufRX.RX[2]) { case 1: k1 = (bit)bufRX.RX[3]; break; case 2: k2 = (bit)bufRX.RX[3]; break; case 3: k3 = (bit)bufRX.RX[3]; break; case 4: k4 = (bit)bufRX.RX[3]; break; case 5: k5 = (bit)bufRX.RX[3]; break; case 6: k6 = (bit)bufRX.RX[3]; break; case 7: k7 = (bit)bufRX.RX[3]; break; }