![]() | |
|
Главная Радио и связь выполнена за два такта микроконтроллера, в счетчике времени - 50 мкс, что соответствует двум тактам микроконтроллера при частоте 4 МГц. Константа RAMEND в следующей команде - это адрес последней ячейки ОЗУ. Значение этой константы ($DF), а также других констант, которые не определены в самой программе директивой .equ, можно найти в файле 2313def.inc. Функция low(RAMEND) выбирает младший байт из константы RAMEND. Для определения адреса последней ячейки ОЗУ микроконтроллера AT90S2313 достаточно одного байта, поэтому указатель стека представлен только одним регистром SPL и используется только младший байт адреса, а старший байт равен нулю. Описание работы самих команд ищите в разделе Instraction Set Summary полного технического описания микроконтроллера. Откройте меню View/Watch (Рис. 13), щелкните правой кнопкой мышки в появившемся окне, выберите строку Add Item. В окне появится строка ввода в колонке Watch. Введите в нее имя переменной tmp. Откройте меню View/Registers и посмотрите, что находится в регистре R16 - его содержимое соответствует значению переменной tmp, так как переменная tmp хранится в регистре R16. Value Location Registet » XWatch 1 ,;v / Рис. 13. Окно Watch Удобно одновременно просматривать изменения сразу в нескольких окнах, для этого надо тщательно устанавливать их размер и выбирать область просмотра. Например, окно Watch можно значительно сузить, перемещая влево вертикальные линии, разделяющие колонки. Для этого установите указатель мышки на вертикальную линию между заголовками колонок, например между Name и Value, при этом должна появиться черная вертикальная полоска со стрелками влево/вправо, нажмите левую клавишу и, не отпуская ее, переместите линию влево. В окне Ю убраны строки Data Direction для портов D и В, для этого надо щелкнуть мышью по строкам, которые вы хотите убрать, нажать правую клавишу мышки и выбрать строку Hide. Для восстановления скрытой строки надо нажать правую клавишу мышки и выбрать строку Show, а из появившегося списка выбрать наименование строки, которую следует восстановить. На Рис. 14 представлено окно AVR Studio с окнами Workspace, \Ntch, Register, Memory, наиболее часто использующимися при отладке нашей программы. Окна могут быть размещены по усмотрению пользователя или стыковаться друг с другом, установить/сбросить соответствующее свойство окна можно щелкнув по нему правой клавишей мышки и выбрав строку Docking View в открывшемся окне (на рисунке это серое окно посередине снизу). Здесь же можно выбрать шрифт текста (строка Font) или выбрать представление чисел (десятичное/шестнадцатеричное). Разные окна обладают различными свойствами, проверьте работу этих свойств самостоятельно. ![]() * Program Counter » Stack Pnntei « Y-teer » Z-regislei » Fretiuencji a Slop Watch §Stack Mofrtor i/OAT9CiS2313 э Ш t;pu s--* SRES О 7i П ST П 5H П 4S П 3V П 2N У 1Z П ОС •" ?PL , Ш HCUCR h- PORTS Й PORTB DDR8 S PINS e Ш PORTD Ш PORTO . DDRO - E FIND MODF OxOOlE OxOOGO OxfflMO ОхШОО 4 0С100МНг 0.25 us OkFF OkFF MO 0k7F
гозИ dSOOms rcall dSOOms TCfflll dSOOms rcail dSDOms cbi POETB.lock Д Sub Z Q uiviM m pa9«w 1 Рис. Z". Размещение окон в AVR Studio Нажмите Fll, в регистре R16 и в переменной Шр, как и ожидалось, одинаковые значения $DF. Окно Register можно закрыть. В окне Proceessor есть строка Stop\Ntch, двойным щелчком можно обнулить ее содержимое, что позволяет использовать это свойство по принципу секундомера для определения времени, необходимого ддя выполнения частей программы. Нажимаем F11: в окне Processor указатель стека приобретает значение $DF Еще F11: переменная Шр очистилась (стала равной нулю). При нулевом результате команды (что бы это ни бьшо - вычитание, сложение, очистка, сдвиг и так далее) установился флаг Z (смотри панель Flags в окне Processor). На панели Stop Watch обнаруживаем, что команды out и clr, перед которыми бьша нажата кнопка Clear, выполнены за 0.5 мкс. Организация портов ввода/вывода Прежде чем продолжать рассмотрение программы, думаю, уместно рассмотреть, как работает порт ввода/вывода на примере функционирования линии РВ2 микроконтроллера AT90S2313; так как эта линия не обременена альтернативными возможностями, ее схема наиболее проста. В состав одного порта, в зависимости от типа микроконтроллера, может входить до восьми линий ввода/вывода. Так, порт D микроконтроллера AT90S2313 содержит 7 линий (PD0...PD6), а порт В - 8 линий (РВ0...РВ7). На Рис. 15 представлена функциональная схема, обеспечивающая работу линии порта РВ2. Чтение выходов DDRB RESET DDRB2 D Q Запись в триггеры DDRB P0RTB2 D Q Запись втриггеры PORTB Чтение выходов PORTB Чтение PINB * Линия " РВ2 Рис. 15. Схема работы линии РВ2 порта ввода/вывода 8-разрядная шина данных микроконтроллера - это восемь линий, по которым данные могут передаваться между различными узлами микроконтроллера. Рассматриваемая линия РВ2 связана лишь с одной из линий шины. 0 1 2 3 4 5 6 7 [ 8 ] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 0.0044 |