ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
269503 Топик полностью
ReAl (31.08.2011 11:03, просмотров: 217) ответил Cepгeй Бopщ на Чтобы mazur не подумал, что мы не понимаем ассемблер (т.е. выходит, что мы его понимаем, а он нас - нет, что из этого следует пусть думает сам)
Вот кстати да, и, кстати, в этом месте и не так, а просто провалиться на следующую команду :-) Send_Com_Init: cbi CMD_PORT,RS ; /*FALLTHROUGH*/ Send_Nibble: rcall Data_Port_Out andi LCD_DATA,0xF0 in r16,DATA_PORT andi r16,0x0F or r16,LCD_DATA out DATA_PORT,r16 sbi CMD_PORT,Ena ; Задержка 7 тактов ; Тут не важно 7 или 5, выполняется несколько раз в начале, экономить нечего rcall Just_ret cbi CMD_PORT,Ena rjmp Data_Port_In Send_Com: cbi CMD_PORT,RS rjmp Send_Byte Send_Data: sbi CMD_PORT,RS ; /*FALLTHROUGH*/ ; именно тут, так как Send_Data вызывается чаще, чем Send_Com, та сбегает по rjmp Send_Byte: rcall Data_Port_Out in r16,DATA_PORT andi r16, 0x0F eor r16, LCD_DATA andi LCD_DATA, 0x0F eor r16, LCD_DATA out DATA_PORT,r16 sbi CMD_PORT,Ena ; Если задержка нужна 5 тактов rjmp . rjmp . nop ; Если устраивает задержка 7 тактов ; rcall Just_ret cbi CMD_PORT,Ena andi r16, 0x0F swap LCD_DATA or r16,LCD_DATA out DATA_PORT,r16 sbi CMD_PORT,Ena ; Если задержка нужна 5 тактов rjmp . rjmp . nop ; Если устраивает задержка 7 тактов ; rcall Just_ret cbi CMD_PORT,Ena ; /*FALLTHROUGH*/ ; именно тут, так как Send_Byte вызывается чаще других, остальные сбегают по rcall Data_Port_In: in r16,Data_DDR andi r16,0x0F out Data_DDR,r16 in r16,Data_Port andi r16,0x0F out Data_Port,r16 Just_ret: ret Data_Port_Out: in r16,Data_DDR ori r16,0xF0 out Data_DDR,r16 ret