- 締切済み
PICのマシンのプログラムについての質問です。
#include <16f873a.h> #fuses HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT,NOLVP #define use_portb_lcd TRUE #use delay (clock=10000000) #include <lcd.c> void port_ini(void); void lcd_express(int); void motor_drive(int); main() { int mode; port_ini(); while(1){ mode = (input_a() & 0b00000110); lcd_express(mode); motor_drive(mode); } } void port_ini(void) { setup_adc_ports(NO_ANALOGS); setup_counters(RTCC_INTERNAL,RTCC_DIV_2); port_b_pullups(FALSE); set_tris_a(0xff); set_tris_b(0x00); set_tris_c(0x00); output_b(0x00); output_c(0x00); lcd_init(); } void lcd_express(int disp) { lcd_gotoxy(1,1); lcd_putc("<DC-motor mode>"); delay_ms(5); lcd_gotoxy(1,2); switch(disp){ case 0:{ lcd_putc("- Go!Go! -"); break; } case 2:{ lcd_putc("- L-Bend -"); break; } case 4:{ lcd_putc("- R-Bend -"); break; } case 6:{ lcd_putc("- R-Turn!-"); break; } default: break; } } void motor_drive(int mode) { switch(mode){ case 0:{ output_c(0b00110000); break; } case 2:{ output_c(0b00111000); break; } case 4:{ output_c(0b01110000); break; } case 6:{ output_c(0b01010000); delay_ms(800); while(!(4==(input_a() & 0b00000110))){} output_c(0b00101000); delay_ms(100); break; } default:break; } } この文でlcdに何も表示しないようにしたいのですがどこを消せばいいのでしょうか? あと、void文などもできれば消して動かせるようにしたいのですが、どのようにすればいいでしょうか? ちなみにプログラムは、SW1・2を押しているときに、それぞれ片方タイヤを回転させ、両方押しているときに両方回転させて前進、両方押していないときは後退するというプログラムです。 ×字の台に張られた黒いテープをたどって最終的に真ん中でとまるという競技のプログラムです。 できればlcd関連のプログラムをすべて消したいです。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- tokichim
- ベストアンサー率42% (88/205)
ソースをみた限りですが… > この文でlcdに何も表示しないようにしたいのですがどこを消せばいいのでしょうか? 簡単にすませるならlcd_express()を以下のようにします。後で元に戻したくなるかもしれないので関数の書式はとりあえず変えない。 void lcd_express(int disp) { delay_ms(5); /* タイミングが変わるとまずいかもなので残す */ } > あと、void文などもできれば消して動かせるようにしたいのですが、どのようにすればいいでしょうか? ? 意味がわかりません。無駄な記述はないと思いますが? 前の方にある3行の関数プロトタイプ文のことをいっているのでしたら、これは必要なものです。「こういう関数を中で使っている」とプログラムがわかりやすくなる効果もありますので、消さない方が得策です。
- penta1331
- ベストアンサー率64% (16/25)
関数名などを見るだけでも、ある程度予想できると思いますよ。 少しは考えてみましたか? main()の中の"lcd_express(mode);"をコメントアウト。 それでもサイズが小さくならないようなら、先頭の"#include <lcd.c>"をコメントアウト。 あと、コメントアウトした関数を削除。