А mux8 не получится использовать?
А потом bitslice на биты полученное число разобьёт. А дальше все просто.
А mux8 не получится использовать?
Код: Выделить всё
/* sudo halcompile --install btn3x6.comp */
component btn3x6 "btn3x6";
description "";
//Input
pin in bit PB0;
pin in bit PB2;
pin in bit PB4;
//Output
pin out bit S1;
pin out bit S2;
pin out bit S3;
pin out bit S4;
pin out bit S5;
pin out bit S6;
pin out bit S7;
function _;
license "GPL";
;;
FUNCTION(_){
if ( PB4 && PB2 && PB0 ) {
S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 0; S6 = 0; S7 = 0;
}
else if ( PB4 && PB2 && !PB0 ) {
S1 = 1; S2 = 0; S3 = 0; S4 = 0; S5 = 0; S6 = 0; S7 = 0;
}
else if ( PB4 && !PB2 && PB0 ) {
S1 = 0; S2 = 1; S3 = 0; S4 = 0; S5 = 0; S6 = 0; S7 = 0;
}
else if ( PB4 && !PB2 && !PB0 ) {
S1 = 0; S2 = 0; S3 = 1; S4 = 0; S5 = 0; S6 = 0; S7 = 0;
}
else if ( !PB4 && PB2 && PB0 ) {
S1 = 0; S2 = 0; S3 = 0; S4 = 1; S5 = 0; S6 = 0; S7 = 0;
}
else if ( !PB4 && PB2 && !PB0 ) {
S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 1; S6 = 0; S7 = 0;
}
else if ( !PB4 && !PB2 && PB0 ) {
S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 0; S6 = 1; S7 = 0;
}
else if ( !PB4 && !PB2 && !PB0 ) {
S1 = 0; S2 = 0; S3 = 0; S4 = 0; S5 = 0; S6 = 0; S7 = 1;
}
}
это готовый компонент именно с твоей логикой работы
и всёsudo halcompile --install btn3x6.comp
Код: Выделить всё
loadrt btn3x6
addf btn3x6.0 servo-thread
net pb0 btn3x6.0.PB0
net pb2 btn3x6.0.PB2
net pb4 btn3x6.0.PB4
loadusr sim_pin pb0 pb2 pb4
спасибо, не знал что так можно свой компонент создать.
Код: Выделить всё
net brun btn3x6.0.S1 halui.program.run
net bstop btn3x6.0.S2 halui.program.stop
net bhome btn3x6.0.S3 halui.home-all
net bmdi0 btn3x6.0.S4 halui.mdi-command-00
net bmdi1 btn3x6.0.S5 halui.mdi-command-01
net bmdi2 btn3x6.0.S6 halui.mdi-command-02
Код: Выделить всё
[HALUI]
MDI_COMMAND = G28
MDI_COMMAND = G0 G53 X0 Y0
MDI_COMMAND = G0 G54 X12