Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2011, 16:59   #1
INGBI
 
Регистрация: 07.12.2011
Сообщений: 4
Восклицание Счетчик на ассемблере

Подскажите что дописать в этот код, что-бы когда минуты достигают 59 то они обнуляються, а счетчик С инкреминтируеться?
Код:
;Для запуску необхідно встановити перемикач SW2 в положення on.
;Щоб побачити кількість хвилин, яка минула з початку відліку необхідно ;встановити перемикач SW1 в положення on, щоб повернутися в режим індикації ;секунд встановіть перемикач SW1 в положення off.

org 0000h                       ;вказівка лічильнику команд 

     clr P2.3			;вмикаємо індикатори 
     mov A,#00h			;заносимо в A значення 0 (счетчик секунд)
     mov P1,#00h		;заносимо в Р1 значення 0 (индикатор отвчеающий за вывод на экран)
     mov b,#00h			;заносимо в В значення 0 (счетчик минут)
	 mov c,#00h			;заносимо в С значення 0 (счетчик часов)
        
        start:
        CLR TCON.4 	        ;обнуляєм біт включення таймера
        JNB P2.1, BEGIN		;якщо біт P2.2 встановлено, то перейти
				;на мітку BEGIN
        SJMP START              ;перейти на мітку START
        BEGIN:
        LCALL DELAY		;викликати функцію DELAY
   
        CJNE A,#059H,NEXT	;якщо регістр А дорівнює 099Н, то перейти на мітку NEXT

        PUSH ACC              ;заносимо значення регістру А в стек
        MOV A,B			;помістити значення регістру В в регістр А	
        INC A			;збільшити значення регітсру А на одиницю
        DA A			;виконати двійково-десяткову корекцію 
        MOV B,A			;помістити значення регістру А в регістр В
        POP ACC			;витягти зі стеку значення регістру А 

        MOV A,#0ffh		;помістити в регістр А значення 0FFh
        
        NEXT:
        clr c			;скинути прапор С
        INC A                           ;збільшити значення регістру А на одиницю
        DA A			;виконати двійкоко-десяткову корекцію 
        JNB P2.2,LOOK_MIN

        MOV P1,A		;помістити значення регістру А в порт Р1
        SJMP START		;перейти на мітку START
        LOOK_MIN:
        MOV P1,B			;помістити значення регістру В порт Р1
        SJMP START		;перейти на мітку START 
        DELAY:
        MOV TH0,#05ah           ;ініціалізуємо старший байт таймера 0                   
        MOV TL0,#0b0h           ;ініціалізуємо молодший байт таймера 0                   
        MOV TMOD,#01            ;встановлюємо тип таймера в 16 розрядний                  
        SETB TCON.4             ;починаємо відлік (включаємо таймер)                   
        SS:
        JB P2.1,START		  ;якщо біт р2.2 встановлено перейти 
					   ;на мітку START 
        JNB TCON.5,SS           ;перевіряємо на переповненість таймера
        CLR TCON.5              ;обнуляєм біт переповнення 
        CLR TCON.4              ;обнуляєм біт включення таймера
        ret				  ;повернення з функції

Последний раз редактировалось INGBI; 10.12.2011 в 17:00. Причина: ошибка кода
INGBI вне форума Ответить с цитированием
Старый 11.12.2011, 22:39   #2
INGBI
 
Регистрация: 07.12.2011
Сообщений: 4
По умолчанию

Никто на этом форуме не может подсказать по поводу ассемблера?
INGBI вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
счетчик Fryg Паскаль, Turbo Pascal, PascalABC.NET 6 04.07.2011 13:41
Системный счетчик на ассемблере ~VL@D~ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 34 08.10.2010 11:31
счетчик Dimati87 Microsoft Office Excel 3 09.04.2009 10:02