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

📄 flash.lst

📁 hc08飞思卡尔单片机上实现flash转换
💻 LST
📖 第 1 页 / 共 3 页
字号:
(0013)     SCC1=0b01000000; 
    A229 A6 40        ldA	#64
    A22B B7 13        stA	0x13
(0014)     //设置允许发送、允许接收,查询方式收发     
(0015)     SCC2=0b00001100;        
    A22D A6 0C        ldA	#12
    A22F B7 14        stA	0x14
    A231 81           rts	
_SCISend1:
  o                    --> X+2
    A232 95           tSX	
FILE: F:\01科研~1\编著2005\HC08嵌~1\GP32程序\HC08EX~2\C\C06_FL~1\SCI.c
(0001) /*-----------------------------------------------------*
(0002) *文件描述:本文件包含了串行通信的4子程序,分别为:        *  
(0003) *(1)SCISend1:串行发送1字节                             *
(0004) *(2)SCISendN:串行发送n字节                             *
(0005) *(3)SCIRe1:串行接收1字节                               *
(0006) *(4)SCIReN:串行接收n字节                               *
(0007) *-------------《嵌入式应用技术基础教程》--------------*/
(0008) //[以下为子程序源代码]
(0009) //[包含头文件]
(0010) #include "SCI.h"
(0011) /*SCISend1:串行发送1个字节-----------------------------*
(0012) *功  能:串行发送1个字节                                *
(0013) *参  数:要发送的数据                                   *
(0014) *返  回:无                                             *
(0015) *-----------------------------------------------------*/
(0016) void SCISend1(unsigned char o)
(0017)  {//判断ReStatusR的第SendTestBit位是否为1,是1可以发送
    A233 20 09        bra	0xA23E
(0018)    while(1)	
(0019)       if ((ReSendStatusR & (1<<SendTestBit)) != 0)
    A235 0F 1606      BRclr	7,0x16,0xA23E
(0020)          { ReSendDataR=o;
    A238 E6 02        ldA	2,X
    A23A B7 18        stA	0x18
(0021)            break;}
    A23C 20 02        bra	0xA240
    A23E 20 F5        bra	0xA235
    A240 81           rts	
_SCISendN:
  i                    --> X+0
  ch                   --> X+5
  n                    --> X+4
    A241 A7 FE        aiS	#-2
    A243 95           tSX	
(0022)  }
(0023) /*SCISendN:串行发送N个字节-----------------------------*
(0024) *功  能:发送数组中的N个字节数据                        *
(0025) *参  数:待发送的数据字节数及其要存放的数组首地址       *          
(0026) *返  回:无                                             *
(0027) *-----------------------------------------------------*/
(0028) void SCISendN(unsigned char n,unsigned char ch[])
(0029)   {int i;
    A244 6F 01        clr	1,X
    A246 7F           clr	0,X
    A247 20 1F        bra	0xA268
(0030)    for(i=0;i<n;i++)          
(0031) 	SCISend1(ch[i]);
    A249 E6 01        ldA	1,X
    A24B EB 06        add	6,X
    A24D B7 41        stA	*__r1
    A24F F6           ldA	0,X
    A250 E9 05        adc	5,X
    A252 B7 40        stA	*__r0
    A254 55 40        ldHX	*__r0
    A256 F6           ldA	0,X
    A257 87           pshA	
    A258 CD A232      jsr	_SCISend1
    A25B A7 01        aiS	#1
    A25D 95           tSX	
    A25E E6 01        ldA	1,X
    A260 AB 01        add	#1
    A262 E7 01        stA	1,X
    A264 F6           ldA	0,X
    A265 A9 00        adc	#0
    A267 F7           stA	0,X
    A268 3F 40        clr	*__r0
    A26A E6 04        ldA	4,X
    A26C B7 41        stA	*__r1
    A26E E6 01        ldA	1,X
    A270 B7 43        stA	*__r3
    A272 F6           ldA	0,X
    A273 B7 42        stA	*__r2
    A275 55 42        ldHX	*__r2
    A277 75 40        cpHX	*__r0
    A279 95           tSX	
    A27A 91 CD        blt	0xA249
    A27C A7 02        aiS	#2
    A27E 81           rts	
_SCIRe1:
  i                    --> X+0
  k                    --> X+1
  p                    --> X+5
    A27F A7 FD        aiS	#-3
    A281 95           tSX	
(0032)   }
(0033) /*SCIRe1:串行收一个字节数据----------------------------*
(0034) *功  能:从串行口接收1个字节的数据                      *         
(0035) *参  数:标志指针p                                      *
(0036) *返  回:接收到的数据(若接收失败,返回0xff)           * 
(0037) *说  明:参数*p带回接收标志=0收到数据,=1未收到数据      *  
(0038) *-----------------------------------------------------*/
(0039) unsigned char SCIRe1(unsigned char *p)
(0040)  { unsigned int k;
    A282 6F 02        clr	2,X
    A284 6F 01        clr	1,X
    A286 20 21        bra	0xA2A9
(0041)    unsigned char i;
(0042)    //ReStatusR第ReTestBit位为1表示可接收数据
(0043) 	for(k=0;k<0xfbbb;k++)
(0044) 	  if ((ReSendStatusR & (1<<ReTestBit)) != 0)
    A288 0B 1612      BRclr	5,0x16,0xA29D
(0045) 	     {i=ReSendDataR;
    A28B B6 18        ldA	0x18
    A28D F7           stA	0,X
(0046) 	      *p=0x00; 
    A28E E6 06        ldA	6,X
    A290 B7 41        stA	*__r1
    A292 E6 05        ldA	5,X
    A294 B7 40        stA	*__r0
    A296 4F           clrA	
    A297 55 40        ldHX	*__r0
    A299 F7           stA	0,X
    A29A 95           tSX	
(0047) 	      break;} 
    A29B 20 1C        bra	0xA2B9
    A29D E6 02        ldA	2,X
    A29F AB 01        add	#1
    A2A1 E7 02        stA	2,X
    A2A3 E6 01        ldA	1,X
    A2A5 A9 00        adc	#0
    A2A7 E7 01        stA	1,X
    A2A9 E6 02        ldA	2,X
    A2AB B7 41        stA	*__r1
    A2AD E6 01        ldA	1,X
    A2AF B7 40        stA	*__r0
    A2B1 55 40        ldHX	*__r0
    A2B3 65 FBBB      cpHX	#0xFBBB
    A2B6 95           tSX	
    A2B7 25 CF        bcs	0xA288
(0048) 	if(k>=0xfbbb) 
    A2B9 E6 02        ldA	2,X
    A2BB B7 41        stA	*__r1
    A2BD E6 01        ldA	1,X
    A2BF B7 40        stA	*__r0
    A2C1 55 40        ldHX	*__r0
    A2C3 65 FBBB      cpHX	#0xFBBB
    A2C6 95           tSX	
    A2C7 25 11        bcs	0xA2DA
(0049) 	  {i=0xff;
    A2C9 A6 FF        ldA	#-1
    A2CB F7           stA	0,X
(0050) 	   *p=0x01;}  	
    A2CC E6 06        ldA	6,X
    A2CE B7 41        stA	*__r1
    A2D0 E6 05        ldA	5,X
    A2D2 B7 40        stA	*__r0
    A2D4 A6 01        ldA	#1
    A2D6 55 40        ldHX	*__r0
    A2D8 F7           stA	0,X
    A2D9 95           tSX	
(0051)     return i;             //返回接收到的数据
    A2DA F6           ldA	0,X
    A2DB A7 03        aiS	#3
    A2DD 81           rts	
_SCIReN:
  fp                   --> X+0
  m                    --> X+1
  ch                   --> X+6
  n                    --> X+5
    A2DE A7 FD        aiS	#-3
    A2E0 95           tSX	
(0052)  }
(0053) /*SCIReN:HC08串行接收N个字节---------------------------*
(0054) *功  能:接收N个字节数据,并存放在ch数组中               *       
(0055) *参  数:待接收的数据字节数及其存放的数组首地址         *       
(0056) *返  回:接收标志=0收到数据,=1未收到数据                * 
(0057) *-----------------------------------------------------*/
(0058) unsigned char SCIReN(unsigned char n,unsigned char ch[])
(0059)  {int m;                  
    A2E1 6F 02        clr	2,X
    A2E3 6F 01        clr	1,X
    A2E5 20 31        bra	0xA318
(0060)    unsigned char fp;
(0061)    m=0;
(0062)    while (m<n)
(0063) 	{ 	          
    A2E7 89           pshX	
    A2E8 8B           pshH	
    A2E9 CD A27F      jsr	_SCIRe1
    A2EC A7 02        aiS	#2
    A2EE 95           tSX	
    A2EF B7 41        stA	*__r1
    A2F1 E6 02        ldA	2,X
    A2F3 EB 07        add	7,X
    A2F5 B7 43        stA	*__r3
    A2F7 E6 01        ldA	1,X
    A2F9 E9 06        adc	6,X
    A2FB B7 42        stA	*__r2
    A2FD B6 41        ldA	*__r1
    A2FF 55 42        ldHX	*__r2
    A301 F7           stA	0,X
    A302 95           tSX	
(0064) 	  ch[m]=SCIRe1(&fp); 
(0065) 	  if (fp==1) return 1;
    A303 F6           ldA	0,X
    A304 A1 01        cmp	#1
    A306 26 04        bne	0xA30C
    A308 A6 01        ldA	#1
    A30A 20 22        bra	0xA32E
(0066) 	  m++;
    A30C E6 02        ldA	2,X
    A30E AB 01        add	#1
    A310 E7 02        stA	2,X
    A312 E6 01        ldA	1,X
    A314 A9 00        adc	#0
    A316 E7 01        stA	1,X
(0067) 	 } 
    A318 3F 40        clr	*__r0
    A31A E6 05        ldA	5,X
    A31C B7 41        stA	*__r1
    A31E E6 02        ldA	2,X
    A320 B7 43        stA	*__r3
    A322 E6 01        ldA	1,X
    A324 B7 42        stA	*__r2
    A326 55 42        ldHX	*__r2
    A328 75 40        cpHX	*__r0
    A32A 95           tSX	
    A32B 91 BA        blt	0xA2E7
(0068)    return 0;	 
FILE: <library>
    A32D 4F           clrA	
    A32E A7 03        aiS	#3
    A330 81           rts	
_memcpy:
    A331 95           tSX	
    A332 AF 02        aiX	#2
    A334 7E 40        mov	0,X+,*__r0
    A336 7E 41        mov	0,X+,*__r1
    A338 7E 42        mov	0,X+,*__r2
    A33A 7E 43        mov	0,X+,*__r3
    A33C 7E 44        mov	0,X+,*__r4
    A33E 7E 45        mov	0,X+,*__r5
    A340 95           tSX	
    A341 55 44        ldHX	*__r4
    A343 65 0000      cpHX	#0x0000
    A346 27 18        beq	0xA360
    A348 55 42        ldHX	*__r2
    A34A E6 00        ldA	0,X
    A34C AF 01        aiX	#1
    A34E 35 42        stHX	*__r2
    A350 55 40        ldHX	*__r0
    A352 E7 00        stA	0,X
    A354 AF 01        aiX	#1
    A356 35 40        stHX	*__r0
    A358 55 44        ldHX	*__r4
    A35A AF FF        aiX	#-1
    A35C 35 44        stHX	*__r4
    A35E 20 E3        bra	0xA343
    A360 95           tSX	
    A361 E6 02        ldA	2,X
    A363 B7 40        stA	*__r0
    A365 E6 03        ldA	3,X
    A367 B7 41        stA	*__r1
    A369 81           rts	

⌨️ 快捷键说明

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