📄 main.lis
字号:
.module main.c
.area text
0000 .dbfile main.c
0000 .dbfunc e main _main fV
0000 ; i -> 0,X
0000 ; p -> 1,X
0000 _main::
0000 .dbline -1
0000 A7FD ais #-3
0002 95 tsx
0003 .dbline 30
0003 ; /*-----------------------------------------------------*
0003 ; *工 程 名:Flash.prj *
0003 ; *硬件连接:无 *
0003 ; *功 能: *
0003 ; * 1.等待接收N+1个数,并放入N和data数组中 *
0003 ; * 2.擦除以addr为首地址的Flash一页,将N个数据写入 *
0003 ; * 3.从以addr为首址的Flash区读取N个数据,串口发送 *
0003 ; *说 明: *
0003 ; * 1.与Visual Basic 6.0 程序Flash_Test.vbp联合运行 *
0003 ; * 2.擦/写函数中用来暂存写入或擦除程序的首末地址的 *
0003 ; * 变量pbase,pend;用来暂存待写入或擦除的Flash首 *
0003 ; * 地址faddr;用来存放写入的数据个数N和写入的数据 *
0003 ; * data[]必须在main函数中定义,否则将出错 *
0003 ; * 3.调用擦/写子程序之前先将待擦/写页后一页开始的 *
0003 ; * 所有区域写保护 *
0003 ; *------------------------------------------------------*
0003 ; /*[头文件]*/
0003 ; #include "SCI.h" //串行通信子程序头文件
0003 ; #include "GP32C.h" //包含头文件
0003 ; #include "flash.h" //包含头文件
0003 ; #include "SCIInit.h" //包含头文件
0003 ; //UINT16 g_bBegin, g_bEnd, g_pAddress;
0003 ; //函数声明
0003 ;
0003 ; //内存变量声明
0003 ; unsigned char N,data[64]; //N:写入FLASH的数据个数
0003 ; //data:将写入flash的数据
0003 ; //主程序
0003 ; void main()
0003 ; {
0003 .dbline 33
0003 ; unsigned char i;
0003 ; unsigned char *p;
0003 ; SCIInit(); //调串行口初始化子程序
0003 CD0000 jsr _SCIInit
0006 95 tsx
0007 2073 bra L3
0009 L2:
0009 .dbline 36
0009 ; //主循环开始
0009 ; while(1)
0009 ; {
0009 .dbline 37
0009 ; SCISend1(86); //发送握手信号86
0009 A656 lda #86
000B 87 psha
000C CD0000 jsr _SCISend1
000F A701 ais #1
0011 95 tsx
0012 .dbline 39
0012 ; //等待接收一个字节的握手信号
0012 ; if(SCIRe1(p)!=56) //是否是56?
0012 E602 lda 2,X
0014 87 psha
0015 E601 lda 1,X
0017 87 psha
0018 CD0000 jsr _SCIRe1
001B A702 ais #2
001D 95 tsx
001E B700 sta *__r1
0020 A138 cmp #56
0022 2702 beq L5
0024 .dbline 40
0024 ; continue; //否,继续握手
0024 2056 bra L3
0026 L5:
0026 .dbline 42
0026 450000 ldhx #_data
0029 89 pshx
002A 8B pshh
002B A601 lda #1
002D 87 psha
002E CD0000 jsr _SCIReN
0031 A703 ais #3
0033 .dbline 43
0033 4E0040 mov *_data,*_N
0036 .dbline 45
0036 450000 ldhx #_data
0039 89 pshx
003A 8B pshh
003B B640 lda *_N
003D 87 psha
003E CD0000 jsr _SCIReN
0041 A703 ais #3
0043 .dbline 48
0043 A602 lda #2
0045 C7FF7E sta 0xff7e
0048 .dbline 49
0048 458000 ldhx #-32768
004B 89 pshx
004C 8B pshh
004D CD0000 jsr _EraseFlash
0050 A702 ais #2
0052 .dbline 52
0052 A602 lda #2
0054 C7FF7E sta 0xff7e
0057 .dbline 53
0057 3F00 clr *__r0
0059 B640 lda *_N
005B 87 psha
005C B600 lda *__r0
005E 87 psha
005F 450000 ldhx #_data
0062 89 pshx
0063 8B pshh
0064 458000 ldhx #-32768
0067 89 pshx
0068 8B pshh
0069 CD0000 jsr _WriteFlash
006C A706 ais #6
006E .dbline 55
006E 458000 ldhx #-32768
0071 89 pshx
0072 8B pshh
0073 B640 lda *_N
0075 87 psha
0076 CD0000 jsr _SCISendN
0079 A703 ais #3
007B 95 tsx
007C .dbline 56
007C L3:
007C .dbline 35
007C 208B bra L2
007E X0:
007E .dbline -2
007E L1:
007E A703 ais #3
0080 .dbline 0 ; func end
0080 81 rts
0081 .dbsym l i 0 c
0081 .dbsym l p 1 pc
0081 .dbend
.area bss
0000 .dbfile main.c
0000 _data::
0000 .blkb 64
0040 .dbsym e data _data A[64:64]c
0040 _N::
0040 .blkb 1
0041 .dbsym e N _N c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -