/* * PORTC:デコーダー1,2: p~i:PORTC 7~4 RB7:C RB6:B RB5:A RB4:G1 H~A:8~0 RB3:C RB2:B RB1:A RB0:G1 * PORTD:16~9 Anode: RD7~RD0 * PORTC:8~1 Anode: RC7~RC0 */ void main( ) { TRISB = 0b00000001;//PORTB RB7~RB1:output,RB0:Input TRISC = 0x00;//PORTC output TRISD = 0x00;//PORTD output PORTC = 0x00;//portc init PORTD = 0x00;//portd init INTEDG = 1; // 割込み条件を立上がりエッジにする INTF = 0; // RB0/INT外部割込みフラグをクリア INTE = 1; // RB0/INT外部割込み許可 GIE = 1; // すべての割り込み許可 while(1){ dynamic1(); PORTC=0x00; dynamic2(); PORTC=0x00; dynamic3(); PORTD=0x00; dynamic4(); PORTD=0x00; } }
int main(int argc, char *argv[]) { //system("rm -f *pgm"); //system("rm -f *ppm"); int algoritmo = -1; int error = 0; int tam = -1; int iteraciones = -1; int tam_tarea = -1; if (argc > 1) { algoritmo = atoi(argv[1]); if (algoritmo < 0 || algoritmo > 1) { error = 1; } } else { error = 1; } if (argc > 2) { tam = atoi(argv[2]); if (tam < 1 || !is_power_of_two(tam)) { error = 1; } } else { error = 1; } if (argc > 3) { iteraciones = atoi(argv[3]); if (iteraciones < 1) { error = 1; } } else { error = 1; } if (argc > 4) { tam_tarea = atoi(argv[4]); if (algoritmo == 1 && tam_tarea < 1) { error = 1; } } if (algoritmo == 1 && argc < 5) { error = 1; } if (error) { //only one node should print errors MPI_Init(&argc, &argv); int com_rank; MPI_Comm_rank(MPI_COMM_WORLD, &com_rank); if (com_rank == 0) { ayuda(argv[0]); } MPI_Finalize(); return EXIT_SUCCESS; } switch (algoritmo) { case 0: continuous_rows_version(argc, argv); break; case 1: dynamic2(argc, argv); break; case 2: //sparse_rows_version(argc, argv); break; case 3: //dynamic_row_assignment(argc, argv); break; } return EXIT_SUCCESS; }