📄 assist~1.lst
字号:
81C2 20 2A bra 0x81EE
(0015) {ReBuf[i]=SCIRe1(&j);
81C4 AF 01 aiX #1
81C6 89 pshX
81C7 8B pshH
81C8 CD 85B5 jsr _SCIRe1
81CB A7 02 aiS #2
81CD 95 tSX
81CE B7 41 stA *__r1
81D0 3F 42 clr *__r2
81D2 E6 02 ldA 2,X
81D4 AB 04 add #4
81D6 B7 43 stA *__r3
81D8 B6 42 ldA *__r2
81DA A9 01 adc #1
81DC B7 42 stA *__r2
81DE B6 41 ldA *__r1
81E0 55 42 ldHX *__r2
81E2 F7 stA 0,X
81E3 95 tSX
(0016) if(j == 1) goto isrRe_Exit;}
81E4 E6 01 ldA 1,X
81E6 A1 01 cmp #1
81E8 26 02 bne 0x81EC
81EA 20 1C bra 0x8208
81EC 6C 02 inc 2,X
81EE E6 02 ldA 2,X
81F0 A1 0F cmp #15
81F2 25 D0 bcs 0x81C4
(0017) //2:解包接收到的数据
(0018) no=DePackReBuf(ReBuf);
81F4 45 0104 ldHX #0x0104
81F7 89 pshX
81F8 8B pshH
81F9 CD 942F jsr _DePackReBuf
81FC A7 02 aiS #2
81FE 95 tSX
81FF B7 41 stA *__r1
8201 F7 stA 0,X
(0019) if(no==0) ReSendFlag=1; //时间接收成功
8202 26 04 bne 0x8208
8204 A6 01 ldA #1
8206 B7 4F stA *__rlo+2
(0020) isrRe_Exit:
(0021) asm("CLI"); //开放总中断
8208 9A clI
8209 A7 03 aiS #3
820B 86 pulA
820C B7 4D stA *__rlo
820E 86 pulA
820F B7 4C stA *__rhi
8211 86 pulA
8212 B7 4B stA *__r11
8214 86 pulA
8215 B7 4A stA *__r10
8217 86 pulA
8218 B7 49 stA *__r9
821A 86 pulA
821B B7 48 stA *__r8
821D 86 pulA
821E B7 47 stA *__r7
8220 86 pulA
8221 B7 46 stA *__r6
8223 86 pulA
8224 B7 45 stA *__r5
8226 86 pulA
8227 B7 44 stA *__r4
8229 86 pulA
822A B7 43 stA *__r3
822C 86 pulA
822D B7 42 stA *__r2
822F 86 pulA
8230 B7 41 stA *__r1
8232 86 pulA
8233 B7 40 stA *__r0
8235 8A pulH
8236 80 rti
_isrKBI:
key_num --> X+0
key1 --> X+1
key2 --> X+2
i --> X+3
8237 8B pshH
8238 B6 40 ldA *__r0
823A 87 pshA
823B B6 41 ldA *__r1
823D 87 pshA
823E B6 42 ldA *__r2
8240 87 pshA
8241 B6 43 ldA *__r3
8243 87 pshA
8244 B6 44 ldA *__r4
8246 87 pshA
8247 B6 45 ldA *__r5
8249 87 pshA
824A B6 46 ldA *__r6
824C 87 pshA
824D B6 47 ldA *__r7
824F 87 pshA
8250 B6 48 ldA *__r8
8252 87 pshA
8253 B6 49 ldA *__r9
8255 87 pshA
8256 B6 4A ldA *__r10
8258 87 pshA
8259 B6 4B ldA *__r11
825B 87 pshA
825C B6 4C ldA *__rhi
825E 87 pshA
825F B6 4D ldA *__rlo
8261 87 pshA
8262 A7 FC aiS #-4
8264 95 tSX
(0022) }
(0023) /*键盘中断处理函数------------------------------------*/
(0024) #pragma interrupt_handler isrKBI
(0025) void isrKBI(void)
(0026) {
8265 7F clr 0,X
(0027) INT8U i,key1,key2,key_num=0;
(0028) asm("SEI"); //关总中断
8266 9B seI
(0029) //开关量输入------------------------
(0030) INTKBSCR|= (1<<IntBit); //屏蔽键盘中断(IMASKK=1)
8267 12 1A Bset 1,0x1A
(0031) KeyInput_Judge(&key1);
8269 AF 01 aiX #1
826B 89 pshX
826C 8B pshH
826D CD 8CB2 jsr _KeyInput_Judge
8270 A7 02 aiS #2
(0032) KeyInput_Init(); //重新初始化键盘
8272 CD 8CA3 jsr _KeyInput_Init
8275 95 tSX
(0033) INTKBSCR&= ~(1<<IntBit); //打开键盘中断(IMASKK=0)
8276 13 1A Bclr 1,0x1A
(0034) //---------------------------------------
(0035) for(i=0;i<5;i++)
8278 6F 03 clr 3,X
827A 20 13 bra 0x828F
(0036) {
827C AF 02 aiX #2
827E 89 pshX
827F 8B pshH
8280 CD 8CB2 jsr _KeyInput_Judge
8283 A7 02 aiS #2
8285 95 tSX
(0037) KeyInput_Judge(&key2);
(0038) if((key1==key2))
8286 E6 01 ldA 1,X
8288 E1 02 cmp 2,X
828A 26 01 bne 0x828D
(0039) key_num++;
828C 7C inc 0,X
(0040) }
828D 6C 03 inc 3,X
828F E6 03 ldA 3,X
8291 A1 05 cmp #5
8293 25 E7 bcs 0x827C
(0041) if(key_num>=2)
8295 F6 ldA 0,X
8296 A1 02 cmp #2
8298 25 06 bcs 0x82A0
(0042) KB_DefValue=key1;
829A E6 01 ldA 1,X
829C B7 50 stA *__rlo+3
829E 20 04 bra 0x82A4
(0043) else
(0044) KB_DefValue=key2;
82A0 E6 02 ldA 2,X
82A2 B7 50 stA *__rlo+3
(0045) asm("CLI"); //开总中断
82A4 9A clI
82A5 A7 04 aiS #4
82A7 86 pulA
82A8 B7 4D stA *__rlo
82AA 86 pulA
82AB B7 4C stA *__rhi
82AD 86 pulA
82AE B7 4B stA *__r11
82B0 86 pulA
82B1 B7 4A stA *__r10
82B3 86 pulA
82B4 B7 49 stA *__r9
82B6 86 pulA
82B7 B7 48 stA *__r8
82B9 86 pulA
82BA B7 47 stA *__r7
82BC 86 pulA
82BD B7 46 stA *__r6
82BF 86 pulA
82C0 B7 45 stA *__r5
82C2 86 pulA
82C3 B7 44 stA *__r4
82C5 86 pulA
82C6 B7 43 stA *__r3
82C8 86 pulA
82C9 B7 42 stA *__r2
82CB 86 pulA
82CC B7 41 stA *__r1
82CE 86 pulA
82CF B7 40 stA *__r0
82D1 8A pulH
82D2 80 rti
_isrTIMER1:
no --> X+0
82D3 8B pshH
82D4 B6 40 ldA *__r0
82D6 87 pshA
82D7 B6 41 ldA *__r1
82D9 87 pshA
82DA B6 42 ldA *__r2
82DC 87 pshA
82DD B6 43 ldA *__r3
82DF 87 pshA
82E0 B6 44 ldA *__r4
82E2 87 pshA
82E3 B6 45 ldA *__r5
82E5 87 pshA
82E6 B6 46 ldA *__r6
82E8 87 pshA
82E9 B6 47 ldA *__r7
82EB 87 pshA
82EC B6 48 ldA *__r8
82EE 87 pshA
82EF B6 49 ldA *__r9
82F1 87 pshA
82F2 B6 4A ldA *__r10
82F4 87 pshA
82F5 B6 4B ldA *__r11
82F7 87 pshA
82F8 B6 4C ldA *__rhi
82FA 87 pshA
82FB B6 4D ldA *__rlo
82FD 87 pshA
82FE A7 FF aiS #-1
8300 95 tSX
(0046) }
(0047) /*定时器Timer1中断处理函数------------------------------------*
(0048) *功能:每1S中采集一次AD值,进行一次DA转换
(0049) *-------------------------------------------------------------*/
(0050) #pragma interrupt_handler isrTIMER1
(0051) void isrTIMER1(void)
(0052) {
8301 9B seI
(0053) INT8U no;
(0054) asm("SEI"); //关总中断
(0055) //1:采集2片2542-22路的AD值
(0056) ADC22P(ADValue);
8302 45 00D7 ldHX #0x00D7
8305 89 pshX
8306 8B pshH
8307 CD 835D jsr _ADC22P
830A A7 02 aiS #2
(0057) //2:DA转换
(0058) DAC(DAvalue);
830C 45 00B7 ldHX #0x00B7
830F 89 pshX
8310 8B pshH
8311 CD 867B jsr _DAC
8314 A7 02 aiS #2
8316 95 tSX
(0059) //------------------------------
(0060) no++;
8317 7C inc 0,X
(0061) if(no==30)
8318 F6 ldA 0,X
8319 A1 1E cmp #30
831B 26 03 bne 0x8320
(0062) {
831D 10 B6 Bset 0,0xB6
(0063) TimeFlag|=0x01; //30s标志TimeFlag.0
(0064) no=0;
831F 7F clr 0,X
(0065) }
8320 1F 20 Bclr 7,0x20
(0066) //------------------------------
(0067) //清除定时器溢出标志位
(0068) T1SC&=~(1<<TOFBit);
(0069) asm("CLI"); //开总中断
8322 9A clI
8323 A7 01 aiS #1
8325 86 pulA
8326 B7 4D stA *__rlo
8328 86 pulA
8329 B7 4C stA *__rhi
832B 86 pulA
832C B7 4B stA *__r11
832E 86 pulA
832F B7 4A stA *__r10
8331 86 pulA
8332 B7 49 stA *__r9
8334 86 pulA
8335 B7 48 stA *__r8
8337 86 pulA
8338 B7 47 stA *__r7
833A 86 pulA
833B B7 46 stA *__r6
833D 86 pulA
833E B7 45 stA *__r5
8340 86 pulA
8341 B7 44 stA *__r4
8343 86 pulA
8344 B7 43 stA *__r3
8346 86 pulA
8347 B7 42 stA *__r2
8349 86 pulA
834A B7 41 stA *__r1
834C 86 pulA
834D B7 40 stA *__r0
834F 8A pulH
8350 80 rti
_isrDummy:
8351 8B pshH
(0070) }
(0071) //未定义的中断处理函数,本函数不能删除
(0072) #pragma interrupt_handler isrDummy
(0073) void isrDummy(void)
(0074) {
8352 8A pulH
8353 80 rti
FILE: ADC22P.c
(0001) /*-----------------------------------------------------*
(0002) *文件描述:本文件包含了AD采集的2子程序,分别为: *
(0003) *(1)ADC22P:2片2543-22路AD采集 *
(0004) *(2)TLC2543:TLC2543芯片A/D转换子程序 *
(0005) *-------------《嵌入式应用技术基础教程》--------------*/
(0006) #include "Includes.h"
(0007) /*SPIInit:SPI初始化子程序-------------------------------*
(0008) *功 能:对SPI进行初始化,默认为允许SPI,主机工作方式,时钟 *
(0009) * 空闲低电平,比特率8分频, *
(0010) * 波特率为CGMOUT/2*BD(设CGMOUT=2*fBUS=2*2.4576MHz)*
(0011) *参 数:无 *
(0012) *返 回:无 *
(0013) *------------------------------------------------------*/
(0014) #include "Includes.h"
(0015) void AD_SPIInit(void)
(0016) {
_AD_SPIInit:
8354 A6 22 ldA #34
8356 B7 10 stA 0x10
(0017) SPCR=0b00100010; //不产生中断、主机方式、时钟空闲低电平
(0018) SPSCR=0b00000001; //8分频
8358 A6 01 ldA #1
835A B7 11 stA 0x11
835C 81 rts
_ADC22P:
j --> X+0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -