📄 vectors08.s
字号:
.module vectors08.c
.area text
.dbfile vectors08.c
.dbfunc e isrRe _isrRe fV
; no -> 0,X
; j -> 1,X
; i -> 2,X
_isrRe::
.dbline -1
pshh
lda *__r0
psha
lda *__r1
psha
lda *__r2
psha
lda *__r3
psha
lda *__r4
psha
lda *__r5
psha
lda *__r6
psha
lda *__r7
psha
lda *__r8
psha
lda *__r9
psha
lda *__r10
psha
lda *__r11
psha
lda *__rhi
psha
lda *__rlo
psha
ais #-3
tsx
.dbline 10
; /*-----------------------------------------------------*
; *文件名:vectors08.c *
; *功 能:用于定义中断矢量表 *
; *-----------------------------------------------------*/
; //[头文件]
; #include "Includes.h"
; /*中断接受处理函数------------------------------------*/
; #pragma interrupt_handler isrRe
; void isrRe(void)
; {
.dbline 12
; INT8U i,j,no;
; asm("SEI"); //禁止所有中断
SEI
.dbline 14
; //1:接收数据
; for(i=0;i<15;i++)
clr 2,X
bra L5
L2:
.dbline 15
; {ReBuf[i]=SCIRe1(&j);
.dbline 15
aix #1
pshx
pshh
jsr _SCIRe1
ais #2
tsx
sta *__r1
clr *__r2
lda 2,X
add #<_ReBuf
sta *__r3
lda *__r2
adc #>_ReBuf
sta *__r2
lda *__r1
ldhx *__r2
sta ,x
tsx
.dbline 16
lda 1,X
cmp #1
bne L6
.dbline 16
bra L8
L6:
.dbline 16
L3:
.dbline 14
inc 2,X
L5:
.dbline 14
lda 2,X
cmp #15
blo L2
.dbline 18
; if(j == 1) goto isrRe_Exit;}
; //2:解包接收到的数据
; no=DePackReBuf(ReBuf);
ldhx #_ReBuf
pshx
pshh
jsr _DePackReBuf
ais #2
tsx
sta *__r1
sta ,X
.dbline 19
; if(no==0) ReSendFlag=1; //时间接收成功
bne L9
.dbline 19
lda #1
sta *_ReSendFlag
L9:
L8:
.dbline 21
; isrRe_Exit:
; asm("CLI"); //开放总中断
CLI
.dbline -2
L1:
ais #3
.dbline 0 ; func end
pula
sta *__rlo
pula
sta *__rhi
pula
sta *__r11
pula
sta *__r10
pula
sta *__r9
pula
sta *__r8
pula
sta *__r7
pula
sta *__r6
pula
sta *__r5
pula
sta *__r4
pula
sta *__r3
pula
sta *__r2
pula
sta *__r1
pula
sta *__r0
pulh
rti
.dbsym l no 0 c
.dbsym l j 1 c
.dbsym l i 2 c
.dbend
.dbfunc e isrKBI _isrKBI fV
; key_num -> 0,X
; key1 -> 1,X
; key2 -> 2,X
; i -> 3,X
_isrKBI::
.dbline -1
pshh
lda *__r0
psha
lda *__r1
psha
lda *__r2
psha
lda *__r3
psha
lda *__r4
psha
lda *__r5
psha
lda *__r6
psha
lda *__r7
psha
lda *__r8
psha
lda *__r9
psha
lda *__r10
psha
lda *__r11
psha
lda *__rhi
psha
lda *__rlo
psha
ais #-4
tsx
.dbline 26
; }
; /*键盘中断处理函数------------------------------------*/
; #pragma interrupt_handler isrKBI
; void isrKBI(void)
; {
.dbline 27
; INT8U i,key1,key2,key_num=0;
clr ,X
.dbline 28
; asm("SEI"); //关总中断
SEI
.dbline 30
; //开关量输入------------------------
; INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
bset #1,0x1a
.dbline 31
; KeyInput_Judge(&key1);
aix #1
pshx
pshh
jsr _KeyInput_Judge
ais #2
.dbline 32
; KeyInput_Init(); //重新初始化键盘
jsr _KeyInput_Init
tsx
.dbline 33
; INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
bclr #1,0x1a
.dbline 35
; //---------------------------------------
; for(i=0;i<5;i++)
clr 3,X
bra L15
L12:
.dbline 36
; {
.dbline 37
; KeyInput_Judge(&key2);
aix #2
pshx
pshh
jsr _KeyInput_Judge
ais #2
tsx
.dbline 38
; if((key1==key2))
lda 1,X
cmp 2,X
bne L16
.dbline 39
; key_num++;
inc ,X
L16:
.dbline 40
L13:
.dbline 35
inc 3,X
L15:
.dbline 35
lda 3,X
cmp #5
blo L12
.dbline 41
; }
; if(key_num>=2)
lda ,X
cmp #2
blo L18
.dbline 42
; KB_DefValue=key1;
lda 1,X
sta *_KB_DefValue
bra L19
L18:
.dbline 44
; else
; KB_DefValue=key2;
lda 2,X
sta *_KB_DefValue
L19:
.dbline 45
; asm("CLI"); //开总中断
CLI
.dbline -2
L11:
ais #4
.dbline 0 ; func end
pula
sta *__rlo
pula
sta *__rhi
pula
sta *__r11
pula
sta *__r10
pula
sta *__r9
pula
sta *__r8
pula
sta *__r7
pula
sta *__r6
pula
sta *__r5
pula
sta *__r4
pula
sta *__r3
pula
sta *__r2
pula
sta *__r1
pula
sta *__r0
pulh
rti
.dbsym l key_num 0 c
.dbsym l key1 1 c
.dbsym l key2 2 c
.dbsym l i 3 c
.dbend
.dbfunc e isrTIMER1 _isrTIMER1 fV
; no -> 0,X
_isrTIMER1::
.dbline -1
pshh
lda *__r0
psha
lda *__r1
psha
lda *__r2
psha
lda *__r3
psha
lda *__r4
psha
lda *__r5
psha
lda *__r6
psha
lda *__r7
psha
lda *__r8
psha
lda *__r9
psha
lda *__r10
psha
lda *__r11
psha
lda *__rhi
psha
lda *__rlo
psha
ais #-1
tsx
.dbline 52
; }
; /*定时器Timer1中断处理函数------------------------------------*
; *功能:每1S中采集一次AD值,进行一次DA转换
; *-------------------------------------------------------------*/
; #pragma interrupt_handler isrTIMER1
; void isrTIMER1(void)
; {
.dbline 54
; INT8U no;
; asm("SEI"); //关总中断
SEI
.dbline 56
; //1:采集2片2542-22路的AD值
; ADC22P(ADValue);
ldhx #_ADValue
pshx
pshh
jsr _ADC22P
ais #2
.dbline 58
; //2:DA转换
; DAC(DAvalue);
ldhx #_DAvalue
pshx
pshh
jsr _DAC
ais #2
tsx
.dbline 60
; //------------------------------
; no++;
inc ,X
.dbline 61
; if(no==30)
lda ,X
cmp #30
bne L21
.dbline 62
; {
.dbline 63
; TimeFlag|=0x01; //30s标志TimeFlag.0
bset #0,*_TimeFlag
.dbline 64
; no=0;
clr ,X
.dbline 65
; }
L21:
.dbline 68
; //------------------------------
; //清除定时器溢出标志位
; T1SC&=~(1<<TOFBit);
bclr #7,0x20
.dbline 69
; asm("CLI"); //开总中断
CLI
.dbline -2
L20:
ais #1
.dbline 0 ; func end
pula
sta *__rlo
pula
sta *__rhi
pula
sta *__r11
pula
sta *__r10
pula
sta *__r9
pula
sta *__r8
pula
sta *__r7
pula
sta *__r6
pula
sta *__r5
pula
sta *__r4
pula
sta *__r3
pula
sta *__r2
pula
sta *__r1
pula
sta *__r0
pulh
rti
.dbsym l no 0 c
.dbend
.dbfunc e isrDummy _isrDummy fV
_isrDummy::
.dbline -1
pshh
.dbline 74
; }
; //未定义的中断处理函数,本函数不能删除
; #pragma interrupt_handler isrDummy
; void isrDummy(void)
; {
.dbline -2
L23:
.dbline 0 ; func end
pulh
rti
.dbend
.area memory(abs)
.org 0xffdc
.dbfile vectors08.c
__vectab::
.word _isrDummy
.word _isrDummy
.word _isrKBI
.word _isrDummy
.word _isrRe
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrTIMER1
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.word _isrDummy
.dbsym e _vectab __vectab A[34:17]pfV
.area lit
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -