Сообщение от FedorChek
|
Ёёёёё..... классно кажется начинаю понимать. Согласно "даташиту" Мега8 (PORTB 0x18 (0x3 ) Мега88 (PORTB 0x05 (0x25)) значит меняем equ PORTB =$18 на equ PORTB =$05 и т.д.
|
Зачем менять вручную?. подключаеш файл определений для нужного МК
.include "M88def.inc";МЕГА88
или
.include "M8def.inc";МЕГА8
в этом файле уже все системные регистры проименованы.
А в программе пишешь:
.def temp=R16 ;(TEMPorary) временный
.equ delay=15 ;delay(задержка)=15
...
...
LDI TEMP,delay
out PORTB,TEMP
rjmp exitoutports
...
...
exitoutports:
И Студия вмечто TEMP подствит R16, а вместо PORTB возмёт из файла определений адрес порта для ДАННОГО контролера и подстваит вместо PORTB.
получится
LDI R16,15
out (адрес порта B в выбраном МК),R16
rjmp exitoutports
а ещё лучше...
.include "M88def.inc";МЕГА88
.def temp=R16 ;(TEMPorary) временный
.equ delay=15 ;delay(задержка)=15
.equ portdatalcd=portb
.equ portenlcd=portb
.equ portrwlcd=portb
.equ portrslcd=portb
.equ pinenlcd=0
.equ pinrwlcd=1
.equ pinrslcd=2
.equ pindata4lcd=3
.equ pindata5lcd=4
.equ pindata6lcd=5
.equ pindata7lcd=6
.def flags0=R17
.equ startdelay=0;флаг старт задержки
тогда в программе писать так...
...
...
cbi portrslcd,pinenlcd
nop
sbi portenlcd,pinenlcd
nop
cbi portrwlcd,pinenlcd
nop
cbr portdatalcd,pindata4lcd
cbr portdatalcd,pindata5lcd
cbr portdatalcd,pindata6lcd
sbr portdatalcd,pindata7lcd
...
...
...
sbr flags0,1‹‹startdelay;флаг старт задержки=1
cbr flags0,1‹‹startdelay;флаг старт задержки=0
sbrs flags0,1‹‹startdelay;флаг старт задержки=1?
жаль Studio не поддерживает директиву
#Define
нельзя определить так как в MPLAB
#Define pinrwlcd portb,0
#Define pinrslcd portb,1
#Define pinenlcd portb,2
#Define pindata4lcd portb,3
#Define pindata5lcd portb,4
#Define pindata6lcd portb,5
#Define pindata7lcd portb,6
#Define startdelay 20,0
так намного удобнее