/* Definition of the Ports used to control Laurino */ /* Interrupt inputs for feelers and switches */ sfr P1L = 0xFF04; sfr P1H = 0xFF06; sfr P2 = 0xFFC0; sfr P3 = 0xFFC4; sbit contact_left = P2^9; sbit contact_right = P2^10; sbit feeler_left = P2^11; sbit feeler_right = P2^12; /* interrupt addresses */ #define intaddr_contact_left 0x19 #define intaddr_contact_right 0x1A #define intaddr_feeler_left 0x1B #define intaddr_feeler_right 0x1C /* interrupt control register */ sfr icntrl_contact_left = 0xFF8A; sfr icntrl_contact_right = 0xFF8C; sfr icntrl_feeler_left = 0xFF8E; sfr icntrl_feeler_right = 0xFF90; /* interrupt enable bits */ sbit ien_contact_right = icntrl_contact_right^6; sbit ien_contact_left = icntrl_contact_left^6; sbit ien_feeler_right = icntrl_feeler_right^6; sbit ien_feeler_left = icntrl_feeler_left^6; /* interrupt flags */ sbit ifl_contact_right = icntrl_contact_right^7; sbit ifl_contact_left = icntrl_contact_left^7; sbit ifl_feeler_right = icntrl_feeler_right^7; sbit ifl_feeler_left = icntrl_feeler_left^7; /* Output for motor control */ sfr motor_out = 0xFFD0; sfr ctrlreg_motor_out = 0xFFD2; /* Output for LEDs */ sfr ctrlreg_LED_out = 0xFFC2; sfr LED_out = 0xFFC0; sbit LED_eng_left_forward = P2^0; sbit LED_eng_left_backward = P2^1; sbit LED_contact_left = P2^2; sbit LED_feeler_left = P2^3; sbit LED_feeler_right = P2^4; sbit LED_contact_right = P2^5; sbit LED_eng_right_backward = P2^6; sbit LED_eng_right_forward = P2^7; /* Laurino movements */ #define turn_right 0x01 #define turn_left 0x04 #define forward 0x05 #define backward 0x0A #define stop_right_eng 0xF3 #define stop_left_eng 0xFC #define stop_engines 0xF0 /* Serial port registers */ sfr P3 = 0xFFC4; sfr DP3 = 0xFFC6; sfr S0TIC = 0xFF6C; sfr S0RIC = 0xFF6E; sfr S0BG = 0xFEB4; sfr S0CON = 0xFFB0; /* Auxiliary registers */ sfr EXICON = 0xF1C0; sfr PSW = 0xFF10; sbit IEN = PSW^11;