📄 hal.s
字号:
.module HAL.C
.area text(rom, con, rel)
.dbfile F:\IccAvr_Pro\USB\HAL.C
.dbfunc e outportb _outportb fV
; val -> R18
; port -> R16
.even
_outportb::
.dbline -1
.dbline 11
;
; #include "HAL.H"
; //#include "D12CI.H"
; //#include "MAIN.H"
; #include "macros.h"
; #include <iom16v.h>
; /**********************************************************************************************************
; *This is the lowest layer code in the firmware,which performs hardware dependent i/o access to PDIUSBD12.*
; **********************************************************************************************************/
; void outportb(unsigned char port,unsigned char val)
; {
.dbline 15
; //unsigned char xdata *ext_address;
;
; // MCU_HOSTDACK=1;
; if (port)
tst R16
breq L2
.dbline 16
; PORTA|=BIT(A0); //Write command reg
sbi 0x1b,7
xjmp L3
L2:
.dbline 18
; else
; PORTA&=~BIT(A0); //Write data area
cbi 0x1b,7
L3:
.dbline 19
; PORTA&=~BIT(WRITE);
cbi 0x1b,6
.dbline 20
; PORTA|=port;
in R2,0x1b
or R2,R16
out 0x1b,R2
.dbline 21
; PORTA&=~BIT(WRITE); //WRITE=0;
cbi 0x1b,6
.dbline 22
; DATA_BUS_D=0xff; //Write data
ldi R24,255
out 0x17,R24
.dbline 23
; DATA_BUS_W=val;
out 0x16,R18
.dbline 24
; DATA_BUS_W=val;
out 0x16,R18
.dbline 25
; PORTA|=BIT(WRITE); //Write=1
sbi 0x1b,6
.dbline -2
.dbline 33
; //ext_address=0xff00+port;
; // ext_address=port;
; //*ext_address=val;
;
;
; //MCU_HOSTDACK=0;
;
; }
L1:
.dbline 0 ; func end
ret
.dbsym r val 18 c
.dbsym r port 16 c
.dbend
.dbfunc e inportb _inportb fc
; c -> R20
; port -> R16
.even
_inportb::
xcall push_gset1
.dbline -1
.dbline 35
; unsigned char inportb(unsigned char port)
; {
.dbline 39
; //unsigned char xdata *ext_address;//define an external data storage
;
; unsigned char c;
; if(port)
tst R16
breq L5
.dbline 40
; PORTA|=BIT(A0); //Read command reg
sbi 0x1b,7
xjmp L6
L5:
.dbline 42
; else
; PORTA&=~BIT(A0); //Read data area
cbi 0x1b,7
L6:
.dbline 43
; PORTA|=BIT(READ); //Read=1;
sbi 0x1b,5
.dbline 44
; PORTA|=port;
in R2,0x1b
or R2,R16
out 0x1b,R2
.dbline 45
; PORTA&=~BIT(READ); //Read=0;
cbi 0x1b,5
.dbline 46
; DATA_BUS_D=0x00; //Read data
clr R2
out 0x17,R2
.dbline 47
; c=DATA_BUS_R;
in R20,0x18
.dbline 48
; c=DATA_BUS_R;
in R20,0x18
.dbline 49
; PORTA|=BIT(READ); //Read=1
sbi 0x1b,5
.dbline 59
; //ext_address=0xff00+port;
; // MCU_HOSTDACK=1; // set DMA's mode flag
;
; //ext_address=0xff00+port;
; //ext_address=port;
; //c=*ext_address;
;
; // MCU_HOSTDACK=0;
;
; return c;
mov R16,R20
.dbline -2
L4:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r c 20 c
.dbsym r port 16 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -