День добрый. Дано: t1 - длит. лог. "1" ,#30H t2 - длит. лог. "0", #20H Т - большая пауза Надо: С помощью команд этого МК сформировать сигнал след. формы: t1,t2,t1,t2,t1,t2, T, и т.д. Как я понял, для решение этой задачи я обязан сделать примерно такой код: Код (Text): ORG 2000H sjmp begin ORG 2030H begin: mov R1,#30H ; t1 mov R2,#20H ; t2 mov R3,#3 repeat: mov P1,#80H ; уровень сигнала лог."1"(Umax) loop1: djnz R1,loop1 mov P2,#20H ; уровень сигнала лог."0"(Umin) loop2: djnz R2,loop2 djnz R3,repeat ; ... ; ПРОШУ ПОМОЧЬ СЮДА ВСТАВИТЬ КУСОК ; ФОРМИРОВАНИИ БОЛЬШОЙ ПАУЗЫ Т ; ... sjmp begin END Но все же прошу проверить меня и помочь организовать Т. Я думаю что сформировать Т можно используя аккумулятор А со значением Т. Но прав ли я?
Для таких целей у КР1816ВЕ51 есть аж два программируемых таймера. Посмотрите здесь http://www.msclub.ce.cctpu.edu.ru/MCU_MPU/8051/start_mk51.htm Использовать циклы для задержек нехорошо. ЗЫ По-моему для генерации такого сигнала лучше использовать жёсткую логику, а не гонять микропроц.
Vov4ick Я там был, водку и пиво пил, по усам текло, а в рот нихрена не попало! Окончательно решение, я сделал таковым: Код (Text): ORG 2000H sjmp begin ORG 2030H begin: mov R1,#30H ; Длит. сигнала лог."1" mov R2,#20H ; Длит. сигнала лог."0" mov R3,#3 ; Задаем кол-во коротких импульсов repeat: mov P1,#80H ; уровень сигнала лог."1"(Umax) loop1: djnz R1,loop1 ; ожидаем когда истечет время в R1 mov P2,#20H ; уровень сигнала лог."0"(Umin) loop0: djnz R2,loop0 ; ожидаем когда истечет время в R2 djnz R3,repeat ; проверяем необходимость повтора ; очередного импульса mov A,#100H ; значение большой паузы Т loopT: djnz A,loopT ; организации большой паузы Т sjmp begin ; возврат в начало программы END Для лабы, это самое то, думаю можно пить чай, ибо пиво пока нельзя, грипп-зараза )))
Для лабы и просто да, а для перспектив и чтобы мозг далше эволюционизировал в сторону распределения машинного времени, аппаратной "многозадачности" однозначно на прерывании таймера надо + ввести флаги начало/окончание, ветвления(полярность полки), счетчики таймаутов, инициализация...