⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vectors08.lis

📁 摩托罗拉单片机的串行通信中断方式的原代码
💻 LIS
字号:
                        .module vectors08.c
                        .area text
                ;     SerialBuff -> 0,X
                ;              i -> 1,X
 0000           _isrRe::
 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 A7FE              ais #-2
 002D 95                tsx
 002E           ; /*-----------------------------------------------------*
 002E           ; *文件名:vectors08.c                                    *
 002E           ; *功  能:用于定义中断矢量表                             *
 002E           ; *-----------------------------------------------------*/
 002E           ; //[头文件]
 002E           ; #include "GP32C.H"          //包含头文件
 002E           ; #include "SCI.h"            //串行通信子程序头文件
 002E           ; /*isrRe:接收中断处理函数-------------------------------*
 002E           ; *功  能:接收1个数据, 发送接到的数据                    *
 002E           ; *-----------------------------------------------------*/
 002E           ; //#pragma interrupt_handler是编译器的伪指令 
 002E           ; #pragma interrupt_handler isrRe  
 002E           ; void isrRe(void) 
 002E           ;   {
 002E           ;     unsigned char SerialBuff[1];    //存放接收数据的数组
 002E           ;       unsigned char i;
 002E           ;         asm("SEI");          //禁止所有中断
 002E 9B                SEI
 002F           ;         //接收1个数据
 002F           ;         i=SCIReN(1,SerialBuff);
 002F 89                pshx
 0030 8B                pshh
 0031 A601              lda #1
 0033 87                psha
 0034 CD0000            jsr _SCIReN
 0037 A703              ais #3
 0039 95                tsx
 003A B700              sta *__r1
 003C E701              sta 1,X
 003E           ;         //若收到数据,则发送接到的数据 
 003E           ;         if(i==0) SCISendN(1,SerialBuff); 
 003E 260B              bne L2
 0040 89                pshx
 0041 8B                pshh
 0042 A601              lda #1
 0044 87                psha
 0045 CD0000            jsr _SCISendN
 0048 A703              ais #3
 004A 95                tsx
 004B           L2:
 004B           ; 	  asm("CLI");		   //开放总中断	
 004B 9A                CLI
 004C           L1:
 004C A702              ais #2
 004E                   .dbline 0 ; func end
 004E 86                pula
 004F B700              sta *__rlo
 0051 86                pula
 0052 B700              sta *__rhi
 0054 86                pula
 0055 B700              sta *__r11
 0057 86                pula
 0058 B700              sta *__r10
 005A 86                pula
 005B B700              sta *__r9
 005D 86                pula
 005E B700              sta *__r8
 0060 86                pula
 0061 B700              sta *__r7
 0063 86                pula
 0064 B700              sta *__r6
 0066 86                pula
 0067 B700              sta *__r5
 0069 86                pula
 006A B700              sta *__r4
 006C 86                pula
 006D B700              sta *__r3
 006F 86                pula
 0070 B700              sta *__r2
 0072 86                pula
 0073 B700              sta *__r1
 0075 86                pula
 0076 B700              sta *__r0
 0078 8A                pulh
 0079 80                rti
 007A           _isrDummy::
 007A 8B                pshh
 007B           ;   }
 007B           ; //未定义的中断处理函数,本函数不能删除
 007B           ; #pragma interrupt_handler isrDummy  
 007B           ; void isrDummy(void) 
 007B           ;   {
 007B           L4:
 007B                   .dbline 0 ; func end
 007B 8A                pulh
 007C 80                rti
                        .area memory(abs)
                        .org 0xffdc
 FFDC           __vectab::
 FFDC 007A              .word _isrDummy
 FFDE 007A              .word _isrDummy
 FFE0 007A              .word _isrDummy
 FFE2 007A              .word _isrDummy
 FFE4 0000              .word _isrRe
 FFE6 007A              .word _isrDummy
 FFE8 007A              .word _isrDummy
 FFEA 007A              .word _isrDummy
 FFEC 007A              .word _isrDummy
 FFEE 007A              .word _isrDummy
 FFF0 007A              .word _isrDummy
 FFF2 007A              .word _isrDummy
 FFF4 007A              .word _isrDummy
 FFF6 007A              .word _isrDummy
 FFF8 007A              .word _isrDummy
 FFFA 007A              .word _isrDummy
 FFFC 007A              .word _isrDummy
                        .area lit

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -