📄 proc_communication.lis
字号:
.module PROC_Communication.c
.area text(rom, con, rel)
0000 .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
.area data(ram, con, rel)
0000 .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
0000 _g_bIfBrake::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
0001 _g_cSpeed::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
0002 _g_wDistance::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
0004 L2:
0004 .blkb 1
.area idata
0004 00 .byte 0
.area data(ram, con, rel)
0005 .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
0005 L3:
0005 .blkb 1
.area idata
0005 00 .byte 0
.area data(ram, con, rel)
0006 .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
0006 .blkb 4
.area idata
0006 00000000 .byte 0,0,0,0
.area data(ram, con, rel)
000A .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
000A L4:
000A .blkb 1
.area idata
000A 00 .byte 0
.area data(ram, con, rel)
000B .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
.area text(rom, con, rel)
0000 .dbfile H:\单片机\源程序\2007全国电子设计大赛\电机闭环模块\PROC_Communication.c
0000 .dbfunc e PROC_Command_Check _PROC_Command_Check fc
0000 .dbsym s cXORCheck L4 c
0000 .dbsym s cBytes L3 A[5:5]c
0000 .dbsym s cByteCounter L2 c
0000 ; cData -> y+5
.even
0000 _PROC_Command_Check::
0000 4A93 st -y,R20
0002 5A93 st -y,R21
0004 2697 sbiw R28,6
0006 .dbline -1
0006 .dbline 74
0006 ; /***********************************************************
0006 ; * 函数库说明:电机闭环位置控制模块通讯函数库 *
0006 ; * 版本: v1.00 *
0006 ; * 作者: 王卓然 *
0006 ; * 创建日期: 2007年9月03日 *
0006 ; * -------------------------------------------------------- *
0006 ; * [支 持 库] *
0006 ; * 支持库名称: *
0006 ; * 需要版本: *
0006 ; * 支持库说明: *
0006 ; * -------------------------------------------------------- *
0006 ; * [版本更新] *
0006 ; * 修改: *
0006 ; * 修改日期: *
0006 ; * 版本: *
0006 ; * -------------------------------------------------------- *
0006 ; * [版本历史] *
0006 ; * -------------------------------------------------------- *
0006 ; * [使用说明] *
0006 ; ***********************************************************/
0006 ;
0006 ; /********************
0006 ; * 头 文 件 配 置 区 *
0006 ; ********************/
0006 ; # include "LIB_Config.h"
0006 ; # include "PF_Config.h"
0006 ; # include "PROC_Communication.h"
0006 ;
0006 ; /********************
0006 ; * 系 统 宏 定 义 *
0006 ; ********************/
0006 ;
0006 ; /*------------------*
0006 ; * 常 数 宏 定 义 *
0006 ; *------------------*/
0006 ;
0006 ; /*------------------*
0006 ; * 动 作 宏 定 义 *
0006 ; *------------------*/
0006 ;
0006 ;
0006 ; /********************
0006 ; * 结构体定义区 *
0006 ; ********************/
0006 ;
0006 ;
0006 ; /********************
0006 ; * 模块函数声明区 *
0006 ; ********************/
0006 ;
0006 ; /********************
0006 ; * 全局函数声明区 *
0006 ; ********************/
0006 ; BOOL PROC_Command_Check(void);
0006 ;
0006 ; /********************
0006 ; * 模块变量声明区 *
0006 ; ********************/
0006 ;
0006 ; /********************
0006 ; * 全局变量声明区 *
0006 ; ********************/
0006 ; BOOL g_bIfBrake = FALSE;
0006 ; int8 g_cSpeed = 0;
0006 ; uint16 g_wDistance = 0;
0006 ;
0006 ; /***********************************************************
0006 ; * 函数说明:数据帧接收函数 *
0006 ; * 输入: 无 *
0006 ; * 输出: 无 *
0006 ; * 调用函数:无 *
0006 ; ***********************************************************/
0006 ; BOOL PROC_Command_Check(void)
0006 ; {
0006 .dbline 75
0006 ; uint8 cData = 0;
0006 2224 clr R2
0008 2D82 std y+5,R2
000A .dbline 80
000A ; static uint8 cByteCounter = 0;
000A ; static uint8 cBytes[sizeof(CMD_FRAME)+1] = {0};
000A ; static uint8 cXORCheck = 0;
000A ;
000A ; if (!SERIAL_IN(cData))
000A 8E01 movw R16,R28
000C 0B5F subi R16,251 ; offset = 5
000E 1F4F sbci R17,255
0010 00D0 rcall _UARTgetDataFromRxBuff
0012 0023 tst R16
0014 11F4 brne L5
0016 X0:
0016 .dbline 81
0016 ; {
0016 .dbline 82
0016 ; return TRUE;
0016 01E0 ldi R16,1
0018 A4C0 rjmp L1
001A L5:
001A .dbline 95
001A ; }
001A ; /*
001A ; Set_DISP_BUFF
001A ; (
001A ; ABS(cData)>>4,
001A ; ABS(cData)&0x0f,
001A ; SET_WORD_DIV_4(g_wDistance).BYTEAH,
001A ; SET_WORD_DIV_4(g_wDistance).BYTEAH,
001A ; SET_WORD_DIV_4(g_wDistance).BYTEAL
001A ; );
001A ; */
001A ; //接收到了数据
001A ; switch (cByteCounter)
001A 40910400 lds R20,L2
001E 4423 tst R20
0020 31F0 breq L10
0022 X1:
0022 4030 cpi R20,0
0024 08F4 brsh X8
0026 89C0 rjmp L7
0028 X8:
0028 X2:
0028 L25:
0028 4530 cpi R20,5
002A 89F0 breq L13
002C X3:
002C 86C0 rjmp L7
002E L10:
002E .dbline 98
002E ; {
002E ; case 0:
002E ; if (cData == 0xAA)
002E 8D81 ldd R24,y+5
0030 8A3A cpi R24,170
0032 09F0 breq X9
0034 95C0 rjmp L8
0036 X9:
0036 X4:
0036 .dbline 99
0036 ; {
0036 .dbline 100
0036 ; cBytes[0] = 0xAA;
0036 8AEA ldi R24,170
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -