ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
15088 Топик полностью
misyachniy (01.10.2004 17:44, просмотров: 1) ответил =mse= на Симулятор, ножка МК, осциллограф.
Я много работаю в KEIL для 51 Пишу на ассемблере, но он понимает и С синтаксис. Надеюсь директива "pre" сработает
#define SERIALDEBUG - для включения/отключения вывода сообщений
для вывода строк использую такой макрос
; Макрос для вывода отладочных строк через COM
DBGPrint macro Mess
  local st, j
#ifdef SERIALDEBUG
	push acc
    push DPH
    push DPL

	mov DPTR, #ST
	call NextChar
	jmp j
st:
 	db Mess, 0x0D   ; признак конца строки
j:  
	call SendByte

    pop DPL
    pop DPH
    pop acc
#endif
 endm 

Для вывода байта с коментарием

;---------------------------------
; Макрос для вывода отладочных строк через COM без перевода строки
DBGPrintWithOutCR macro Mess2
  local St, j, NextCharWithOutCR
#ifdef SERIALDEBUG
	push acc
    push DPH
    push DPL

	mov DPTR, #St
	clr a
	movc a, @a + DPTR
NextCharWithOutCR:
	call SendByte
	inc DPTR
	clr a
	movc a, @a + DPTR
	cjne A, #'$', NextCharWithOutCR
	jmp j
St:
 	db Mess2, '$'
j:  
    pop DPL
    pop DPH
    pop acc
#endif
 endm 
;---------------------------------
DBGCommentWithByte	macro ST, Byte
#ifdef SERIALDEBUG
	push ACC
	DBGPrintWithOutCR St	; в начале выведем комментарий
	mov a,byte
	call SendByteAsHex;
	mov a, #0x0D
	call SendByte
	pop ACC
#endif
 endm
;---------------------------------

Ну а байт просто 
	mov a,byte
	call SendByteAsHex;