[an error occurred while processing this directive]
|
Написал простейшую процедурку на встроенном скриптовом
языке отладчика. И вроде все верно, но вот работать как
следует она отказывается.
Предполагалось следующее: после нажатия кнопки "Start Monitor"
функция rd0() должна отслеживать все обращения по чтению по адресу
0xFF80 (на него маппируется внешняя периферия, скажем регистр) и
подставлять в аккумулятор вместо возвращаемого результата значение
RD_VAL. Значение RD_VAL задается функциями setFF() и set00().
Проблема в том, что printf в rd0() выводит верные значения
аккумулятора, но в реальности аккумулятор не изменяется. Т.е.
возвращаемое значение по адресу 0xFF80 функцией rd0() не изменяется.
Тестирование проводились на Keil 7.50a. uVision 3.05e и 2.40a.
define int RD_VALsignal void rd0() {
while (1) {
rwatch(X:0xFF80);
A=RD_VAL;
printf("%02X\n",A);
}
}func void setFF() {RD_VAL=0xFF;}
func void set00() {RD_VAL=0x00;}RD_VAL=0x00;
define button "Start Monitor","rd0()";
define button "Set to 0xFF","setFF()";
define button "Set to 0x00","set00()";
E-mail: info@telesys.ru