Понятно. Тогда можно еще вопрос по теме.
Я взял откомпилированную программу, дизассемблировал ее и нашел код, где программа отправляет байт в микросхему памяти. Опустив ненужные детали, привожу код с комментариями:
Код
9038 7742 MOV.B #8,R7 Устанавливаем счетчик цикла на 8 раз
903A F0C08000EB6F BIC.B #0080,0029 Устанавливаем низкий уровень сигнала на пине P2.7 (вход SCK микросхем памяти)
9040 0858 ADD R8,R8 Сдвигаем влево на 1 бит отправляемый байт
9042 0428 JNC 904C Если очередной бит отправляемого байта низкого уровня, то переходим к адресу 0x904C
9044 F0D04000E16F BIS.B #0040,0029 Устанавливаем высокий уровень сигнала на пине P2.6 (вход SI микросхем)
904A 033C JMP 9052 Переходим к адресу 0x9052
904C F0C04000D96F BIC.B #0040,0029 Устанавливаем низкий уровень сигнала на пине P2.6 (вход SI микросхем)
9052 0343 NOP
9054 F0D08000D16F BIS.B #0080,0029 Устанавливаем высокий уровень сигнала на пине P2.7 (вход SCK микросхем памяти)
905A 1783 SUB #1,R7 Если цикл передачи байта не закончился, то...
905C EE23 JNZ 903A ...переходим к адресу 0x903A
Объясните, для чего нужна команда NOP после команды, устанавливающей на пине SI нужный уровень? Такое ощущение, что она нужна для гарантированного появления на пине SI нужного уровня сигнала. Но как мне пояснили выше, уровень устанавливается сразу после выполнения команды...