vectors08.lis
来自「为日本瑞萨苏州分公司做的一个温控系统」· LIS 代码 · 共 548 行 · 第 1/2 页
LIS
548 行
.module Vectors08.c
.area text
0000 .dbfile Vectors08.c
0000 .dbfunc e isrSCIRe _isrSCIRe fV
0000 ; Tmax -> 2,X
0000 ; Tmin -> 3,X
0000 ; data -> 4,X
0000 _isrSCIRe::
0000 .dbline -1
0000 8B pshh
0001 B600 lda *__r0
0003 87 psha
0004 B600 lda *__r1
0006 87 psha
0007 B600 lda *__r2
0009 87 psha
000A B600 lda *__r3
000C 87 psha
000D B600 lda *__r4
000F 87 psha
0010 B600 lda *__r5
0012 87 psha
0013 B600 lda *__r6
0015 87 psha
0016 B600 lda *__r7
0018 87 psha
0019 B600 lda *__r8
001B 87 psha
001C B600 lda *__r9
001E 87 psha
001F B600 lda *__r10
0021 87 psha
0022 B600 lda *__r11
0024 87 psha
0025 B600 lda *__rhi
0027 87 psha
0028 B600 lda *__rlo
002A 87 psha
002B A7F8 ais #-8
002D 95 tsx
002E .dbline 41
002E ; //-------------------------------------------------------------------------*
002E ; //文件名:vectors08.c *
002E ; //功 能:用于定义中断矢量表 *
002E ; //-------------------------------------------------------------------------*
002E ; //头文件
002E ; #include "GP32C.H" //包含头文件
002E ; #include "Type.h" //类型别名定义
002E ; #include "EnDisInt.h" //开放或禁止MCU各模块中断头文件
002E ; #include "LCD.h" //包含LCD驱动头文件
002E ; #include "Show.h" //包含LCD显示头文件
002E ; #include "H08SCI.h" //包含SCI发送接收头文件
002E ; #include "Flash.h"
002E ;
002E ; //定时器相应寄存器定义
002E ; #define TOFBit 7 //定时器溢出标志位
002E ;
002E ; //全局变量声明
002E ; extern INT8U LcdShowBuff[64]; //外部定义64个字节的LCD显示缓冲区
002E ; extern INT16U ADValue[11]; //11路A/D采集数据
002E ; extern INT16U Temper; //设定温度
002E ; extern INT16U CurtTmp; //当前温度
002E ; extern INT16U CurtTime; //当前时间
002E ; extern INT16U Time; //定时时间
002E ; extern INT8U ScdTim; //中断秒数
002E ; extern INT16U MntTim; //中断分数
002E ; extern const INT16U BigNumCode[10][32];
002E ; extern const INT8U Tmin;
002E ; extern const INT8U Tmax;
002E ; extern const INT16U TADmin;
002E ; extern const INT16U TADmax;
002E ; extern const INT8U MCUno;
002E ; extern INT8U FlashFlag;
002E ; extern unsigned char N,FlashData[8];
002E ; extern INT16U ADCurtTmp;
002E ;
002E ;
002E ; //内部函数
002E ; //串行接收中断处理函数
002E ; #pragma interrupt_handler isrSCIRe
002E ; void isrSCIRe(void)
002E ; {
002E .dbline 45
002E ; INT8U data[4];
002E ; INT8U Tmin,Tmax;
002E ;
002E ; DisableMCUInterrupt();
002E 9B SEI
002F .dbline 46
002F ; SCIReN(1,data);
002F AF04 aix #4
0031 89 pshx
0032 8B pshh
0033 A601 lda #1
0035 87 psha
0036 CD0000 jsr _SCIReN
0039 A703 ais #3
003B 95 tsx
003C .dbline 47
003C ; if(data[0]==MCUno) //1#
003C E604 lda 4,X
003E C10000 cmp _MCUno
0041 2703 beq X4
0043 CC011F jmp L2
0046 X4:
0046 .dbline 48
0046 ; {
0046 .dbline 49
0046 ; SCIReN(3,data);
0046 AF04 aix #4
0048 89 pshx
0049 8B pshh
004A A603 lda #3
004C 87 psha
004D CD0000 jsr _SCIReN
0050 A703 ais #3
0052 95 tsx
0053 .dbline 50
0053 ; switch(data[0])
0053 7F clr ,X
0054 E604 lda 4,X
0056 E701 sta 1,X
0058 F6 lda ,X
0059 2609 bne X0
005B E601 lda 1,X
005D A14D cmp #77
005F 2603 bne X5
0061 CC00F7 jmp L16
0064 X5:
0064 X0:
0064 E601 lda 1,X
0066 B700 sta *__r1
0068 F6 lda ,X
0069 B700 sta *__r0
006B 5500 ldhx *__r0
006D 65004D cphx #77
0070 95 tsx
0071 9003 bge X6
0073 CC011F jmp L4
0076 X6:
0076 L24:
0076 F6 lda ,X
0077 2606 bne X1
0079 E601 lda 1,X
007B A152 cmp #82
007D 270C beq L7
007F X1:
007F F6 lda ,X
0080 2606 bne X2
0082 E601 lda 1,X
0084 A154 cmp #84
0086 2746 beq L8
0088 X2:
0088 CC011F jmp L4
008B X3:
008B .dbline 51
008B ; {
008B L7:
008B .dbline 53
008B ; case 'R': //读数据
008B ; SCISend1(CurtTmp>>8);
008B B600 lda *_CurtTmp
008D 87 psha
008E CD0000 jsr _SCISend1
0091 A701 ais #1
0093 .dbline 54
0093 ; SCISend1(CurtTmp);
0093 B601 lda *_CurtTmp+1
0095 87 psha
0096 CD0000 jsr _SCISend1
0099 A701 ais #1
009B .dbline 55
009B ; SCISend1(Temper>>8);
009B B600 lda *_Temper
009D 87 psha
009E CD0000 jsr _SCISend1
00A1 A701 ais #1
00A3 .dbline 56
00A3 ; SCISend1(Temper);
00A3 B601 lda *_Temper+1
00A5 87 psha
00A6 CD0000 jsr _SCISend1
00A9 A701 ais #1
00AB .dbline 57
00AB ; SCISend1(CurtTime>>8);
00AB B600 lda *_CurtTime
00AD 87 psha
00AE CD0000 jsr _SCISend1
00B1 A701 ais #1
00B3 .dbline 58
00B3 ; SCISend1((INT8U)CurtTime);
00B3 B601 lda *_CurtTime+1
00B5 87 psha
00B6 CD0000 jsr _SCISend1
00B9 A701 ais #1
00BB .dbline 59
00BB ; SCISend1(Time>>8);
00BB B600 lda *_Time
00BD 87 psha
00BE CD0000 jsr _SCISend1
00C1 A701 ais #1
00C3 .dbline 60
00C3 ; SCISend1(Time);
00C3 B601 lda *_Time+1
00C5 87 psha
00C6 CD0000 jsr _SCISend1
00C9 A701 ais #1
00CB 95 tsx
00CC .dbline 61
00CC ; break;
00CC 2051 bra L5
00CE L8:
00CE .dbline 64
00CE ; case 'T': //校准当前温度值
00CE ;
00CE ; FlashData[0]=Tmin;
00CE E603 lda 3,X
00D0 B700 sta *_FlashData
00D2 .dbline 65
00D2 ; FlashData[1]=data[2];
00D2 E606 lda 6,X
00D4 B701 sta *_FlashData+1
00D6 .dbline 66
00D6 ; FlashData[2]=TADmin>>8;
00D6 C60000 lda _TADmin
00D9 B702 sta *_FlashData+2
00DB .dbline 67
00DB ; FlashData[3]=TADmin;
00DB C60001 lda _TADmin+1
00DE B703 sta *_FlashData+3
00E0 .dbline 68
00E0 ; FlashData[4]=ADCurtTmp>>8;
00E0 B600 lda *_ADCurtTmp
00E2 B704 sta *_FlashData+4
00E4 .dbline 69
00E4 ; FlashData[5]=ADCurtTmp;
00E4 B601 lda *_ADCurtTmp+1
00E6 B705 sta *_FlashData+5
00E8 .dbline 70
00E8 ; FlashData[6]=MCUno;
00E8 C60000 lda _MCUno
00EB B706 sta *_FlashData+6
00ED .dbline 71
00ED ; N=7;
00ED A607 lda #7
00EF B700 sta *_N
00F1 .dbline 72
00F1 ; FlashFlag=1;
00F1 A601 lda #1
00F3 B700 sta *_FlashFlag
00F5 .dbline 73
00F5 ; break;
00F5 2028 bra L5
00F7 L16:
00F7 .dbline 75
00F7 ; case 'M': //更改MCU号
00F7 ; FlashData[0]=Tmin;
00F7 E603 lda 3,X
00F9 B700 sta *_FlashData
00FB .dbline 76
00FB ; FlashData[1]=Tmax;
00FB E602 lda 2,X
00FD B701 sta *_FlashData+1
00FF .dbline 77
00FF ; FlashData[2]=TADmin>>8;
00FF C60000 lda _TADmin
0102 B702 sta *_FlashData+2
0104 .dbline 78
0104 ; FlashData[3]=TADmin;
0104 C60001 lda _TADmin+1
0107 B703 sta *_FlashData+3
0109 .dbline 79
0109 ; FlashData[4]=TADmax>>8;
0109 C60000 lda _TADmax
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?