📄 assist~1.lst
字号:
__start:
__text_start:
8058 45 0240 ldHX #0x0240
805B 94 tXS
805C CD 808D jsr __HC08Setup
805F 45 00A2 ldHX #0x00A2
8062 65 0105 cpHX #0x0105
8065 27 06 beq 0x806D
8067 6F 00 clr 0,X
8069 AF 01 aiX #1
806B 20 F5 bra 0x8062
806D 45 004F ldHX #0x004F
8070 94 tXS
8071 45 8004 ldHX #0x8004
8074 65 8058 cpHX #0x8058
8077 27 0B beq 0x8084
8079 E6 00 ldA 0,X
807B 9EE7 00 stA 0,S
807E AF 01 aiX #1
8080 A7 01 aiS #1
8082 20 F0 bra 0x8074
8084 45 0240 ldHX #0x0240
8087 94 tXS
8088 CD 80B2 jsr _main
_exit:
808B 20 FE bra 0x808B
FILE: setup.c
(0001) /*_HC08Setup:GP32系统初始化子程序----------------------*
(0002) *功能:系统初始化设置:设置CONFIG1和CONFIG2寄存器 *
(0003) CGM的寄存器设置:由外部晶振f=32.768kHz,产生内部 *
(0004) 总线时钟2.4576MHz *
(0005) *参数:无 *
(0006) *返回:无 *
(0007) *-----------------------------------------------------*/
(0008) #include "GP32C.h" //映像寄存器地址头文件
(0009) void _HC08Setup(void)
(0010) {
__HC08Setup:
808D A6 01 ldA #1
808F B7 1E stA 0x1E
(0011) //初始化CONFIG2
(0012) CONFIG2=0b00000001; //SCIBDSRC=1内部总线时钟用作SCI
(0013) //时钟;OSCSTOPENB=0在stop模式下
(0014) //禁止振荡器工作
(0015) //初始化CONFIG1
(0016) CONFIG1=0b00111101; //COPD=1 禁止COP模块
8091 A6 3D ldA #61
8093 B7 1F stA 0x1F
(0017) //STOP=0 禁止STOP指令
(0018) //SSREC=1 32个CGMXCLK周期退出
(0019) //STOP模式
(0020) //LVI5OR3=1 LVI工作在5V
(0021) //LVIPWRD=1 禁止LVI模块电源
(0022) //LVIRSTD=1 允许LVI复位信号
(0023) //LVISTOP=0 在stop模式下禁止LVI
(0024) //COPRS=0 COP溢出范围使用长的时间
(0025) PCTL=0x00; //①禁止PLL:清零PLL控制寄存器PCTL
8095 3F 36 clr 0x36
(0026) PCTL=0x01; //②将P、E写入PTCL,置VCO的参考频率
8097 A6 01 ldA #1
8099 B7 36 stA 0x36
(0027) // 为2
(0028) PMSH=0x01; //③将N写入PMSH、PMSL,置VCO的倍
809B A6 01 ldA #1
809D B7 38 stA 0x38
(0029) // 频因子为$12C
(0030) PMSL=0x2C;
809F A6 2C ldA #44
80A1 B7 39 stA 0x39
(0031) PMRS=0b10000000; //④将L写入PMRS,置VCO的输出频率范
80A3 A6 80 ldA #-128
80A5 B7 3A stA 0x3A
(0032) // 围系数为$80
(0033) PRDS=0x01; //⑤将R写入PRDS
80A7 A6 01 ldA #1
80A9 B7 3B stA 0x3B
(0034) PCTL|=(1<<5); //⑥置PCTL.PLLON=1,启动PLL电路
80AB 1A 36 Bset 5,0x36
(0035) PBWC|=(1<<7); //⑦PBWC自动带宽控制位=1,选择自动
80AD 1E 37 Bset 7,0x37
(0036) // 控制方式
(0037) PCTL|=(1<<4); //⑧PCTL.BCS=1,选择PLL电路为时钟源
80AF 18 36 Bset 4,0x36
80B1 81 rts
_main:
channel --> X+0
cs --> X+1
j --> X+2
i --> X+4
k --> X+6
buf --> X+7
data --> X+13
SendBuff --> X+16
buff --> X+38
tmp --> X+40
80B2 A7 D7 aiS #-41
80B4 95 tSX
FILE: main.c
(0001) /*-----------------------------------------------------*
(0002) *工 程 名:Assistant.prj
(0003) *硬件连接:
(0004) *程序描述: SD-HC08 模板生成
(0005) */
(0006) /*[头文件]*/
(0007) #include "Includes.h"
(0008) //变量定义
(0009) INT8U MACHINE_NO=1; //本机编号
(0010) //SCI变量
(0011) INT8U ReBuf[];
(0012) INT8U SendBuf[];
(0013) INT8U ReSendFlag=0; //接受发送标志(1-接受成功)
(0014) INT16U ADValue[22]; //存放22路AD值
(0015) INT16U DAvalue[16]; //存放8路DA转换的16位数据
(0016) //Key使用变量
(0017) INT8U KB_DefValue=0xff; //键盘定义值
(0018) INT8S MoveBtn; //LCD切屏标志(1-上移;-1-下移)
(0019) INT8U CertenFlag=0; //确定按钮标志(0-上/下移按钮为行切换功能,1-上/下移按钮为温湿度加减按钮)
(0020) INT8U CurrentRow=1; //当前光标所在行
(0021)
(0022) INT8U TimeFlag; //定时标志字节
(0023) //LCD显示和温湿度调节变量
(0024) INT8U LcdShowBuff[64]={" 125.3℃(130℃) "" 55.3% ( 55% ) "
(0025) " 舒适 送风 ""2007.04.03 22:20"};//LCD显示的初始信息
(0026) INT16U BasicT; //温度设定值(温度范围-40~+140℃)
(0027) INT8U SignBT; //设定温度符号(+/-)
(0028) INT8U SignCT; //当前温度符号
(0029) INT16U CurrentT; //当前温度
(0030) INT16U BasicH; //湿度设定值(范围0~100%)
(0031) INT16U CurrentH=2; //当前湿度
(0032) INT8U ColdHotFlag=0; //当前风机状态(0舒适/1制冷/2制热),
(0033) INT8U ColdHot[12]={"舒适制冷制热"};
(0034) INT8U Hour[5]; //系统时间(y-m-d-h-s)
(0035) //控制信息变量
(0036) INT8U WindState; //风机状态(76排风阀,54送风阀,32新风阀,10回风阀)
(0037) INT16U BackWindT; //回风管温度的数值
(0038) INT8U BackWindST; //回风管温度的符号
(0039) INT16U BackWindH; //回风管湿度
(0040) /*[主函数]*/
(0041) void main()
(0042) {
80B5 9B seI
(0043) INT8U buff[2];
(0044) INT8U SendBuff[22];
(0045) INT8U data[3];INT8U buf[6];
(0046)
(0047) INT8U tmp,k;
(0048) int i,j;
(0049) INT8U cs,channel;
(0050)
(0051) //各个模块初始化
(0052) asm("SEI");
(0053) SCIInit();Lcdinit();AD_SPIInit();DA_SPIInit();
80B6 CD 8542 jsr _SCIInit
80B9 CD 8818 jsr _Lcdinit
80BC CD 8354 jsr _AD_SPIInit
80BF CD 8674 jsr _DA_SPIInit
(0054) TLV5608Init();KeyInput_Init();
80C2 CD 86C4 jsr _TLV5608Init
80C5 CD 8CA3 jsr _KeyInput_Init
(0055) INTKBSCR&= ~(1<<IntBit); //开放键盘中断(IMASKk=0)
80C8 13 1A Bclr 1,0x1A
(0056) SCC2|=(1<<5); //令SCC2.5=1,允许接收中断
80CA 1A 14 Bset 5,0x14
(0057) asm("CLI");
80CC 9A clI
(0058) //LCD初始化信息----------------------
(0059) Print(CurrentRow,1,">",1);//在当前行显示选中标志'>>'
80CD A6 01 ldA #1
80CF 87 pshA
80D0 45 8000 ldHX #0x8000
80D3 89 pshX
80D4 8B pshH
80D5 87 pshA
80D6 B6 52 ldA 0x52
80D8 87 pshA
80D9 CD 8F38 jsr _Print
80DC A7 05 aiS #5
(0060) LcdShCh(LcdShowBuff);
80DE 45 0053 ldHX #0x0053
80E1 89 pshX
80E2 8B pshH
80E3 CD 885B jsr _LcdShCh
80E6 A7 02 aiS #2
80E8 95 tSX
80E9 CC 8187 jmp 0x8187
(0061) //0:等待接收设定温湿度和系统时间,ReSendFlag=1时执行主循环
(0062) while(ReSendFlag)
(0063) {
80EC B6 50 ldA *__rlo+3
80EE A4 20 and #32
80F0 E7 28 stA 40,X
(0064) //1:Key功能[S]----------------------------------------------------------
(0065) //Key.1:上移按钮标志
(0066) tmp=KB_DefValue&0x20;
(0067) if(tmp==0) {KB_DefValue|=0xF0;MoveBtn=1;}
80F2 26 0A bne 0x80FE
80F4 B6 50 ldA *__rlo+3
80F6 AA F0 orA #-16
80F8 B7 50 stA *__rlo+3
80FA A6 01 ldA #1
80FC B7 A8 stA 0xFFFFFFA8
(0068) //Key.2:下移按钮标志
(0069) tmp=KB_DefValue&0x40;
80FE B6 50 ldA *__rlo+3
8100 A4 40 and #64
8102 E7 28 stA 40,X
(0070) if(tmp==0) {KB_DefValue|=0xF0;MoveBtn=-1;}
8104 26 0A bne 0x8110
8106 B6 50 ldA *__rlo+3
8108 AA F0 orA #-16
810A B7 50 stA *__rlo+3
810C A6 FF ldA #-1
810E B7 A8 stA 0xFFFFFFA8
(0071) //Key.3:确定按钮
(0072) tmp=KB_DefValue&0x80;
8110 B6 50 ldA *__rlo+3
8112 A4 80 and #-128
8114 E7 28 stA 40,X
(0073) if(tmp==0) {KB_DefValue|=0xF0;CertenFlag=(CertenFlag+1)%2;}
8116 26 13 bne 0x812B
8118 B6 50 ldA *__rlo+3
811A AA F0 orA #-16
811C B7 50 stA *__rlo+3
811E B6 51 ldA 0x51
8120 AB 01 add #1
8122 AE 02 ldX #2
8124 8C clrH
8125 52 div
8126 8B pshH
8127 86 pulA
8128 95 tSX
8129 B7 51 stA 0x51
(0074) //Key.4:上移按钮功能
(0075) if((MoveBtn==1)&&(CertenFlag==0)){MoveBtn=0;UpBtn(&CurrentRow);}
812B B6 A8 ldA 0xFFFFFFA8
812D A1 01 cmp #1
812F 26 11 bne 0x8142
8131 B6 51 ldA 0x51
8133 26 0D bne 0x8142
8135 3F A8 clr 0xFFFFFFA8
8137 45 0052 ldHX #0x0052
813A 89 pshX
813B 8B pshH
813C CD 8D4B jsr _UpBtn
813F A7 02 aiS #2
8141 95 tSX
(0076) //Key.5:下移按钮功能
(0077) if((MoveBtn==-1)&&(CertenFlag==0)){MoveBtn=0;DownBtn(&CurrentRow);}
8142 B6 A8 ldA 0xFFFFFFA8
8144 A1 FF cmp #-1
8146 26 11 bne 0x8159
8148 B6 51 ldA 0x51
814A 26 0D bne 0x8159
814C 3F A8 clr 0xFFFFFFA8
814E 45 0052 ldHX #0x0052
8151 89 pshX
8152 8B pshH
8153 CD 8CCD jsr _DownBtn
8156 A7 02 aiS #2
8158 95 tSX
(0078) //Key.6:加1
(0079) if(MoveBtn==1&&CertenFlag==1){MoveBtn=0;AddBtn(CurrentRow);}
8159 B6 A8 ldA 0xFFFFFFA8
815B A1 01 cmp #1
815D 26 11 bne 0x8170
815F B6 51 ldA 0x51
8161 A1 01 cmp #1
8163 26 0B bne 0x8170
8165 3F A8 clr 0xFFFFFFA8
8167 B6 52 ldA 0x52
8169 87 pshA
816A CD 8DC9 jsr _AddBtn
816D A7 01 aiS #1
816F 95 tSX
(0080) //Key.7:减1
(0081) if(MoveBtn==-1&&CertenFlag==1){MoveBtn=0;SubBtn(CurrentRow);}
8170 B6 A8 ldA 0xFFFFFFA8
8172 A1 FF cmp #-1
8174 26 11 bne 0x8187
8176 B6 51 ldA 0x51
8178 A1 01 cmp #1
817A 26 0B bne 0x8187
817C 3F A8 clr 0xFFFFFFA8
817E B6 52 ldA 0x52
8180 87 pshA
8181 CD 8E7C jsr _SubBtn
8184 A7 01 aiS #1
8186 95 tSX
(0082) ////Key功能[E]--------------------------------------------------------
(0083)
(0084) }//[主循环结束]
8187 B6 4F ldA *__rlo+2
8189 27 03 beq 0x818E
818B CC 80EC jmp 0x80EC
818E A7 29 aiS #41
8190 81 rts
_isrRe:
no --> X+0
j --> X+1
i --> X+2
8191 8B pshH
8192 B6 40 ldA *__r0
8194 87 pshA
8195 B6 41 ldA *__r1
8197 87 pshA
8198 B6 42 ldA *__r2
819A 87 pshA
819B B6 43 ldA *__r3
819D 87 pshA
819E B6 44 ldA *__r4
81A0 87 pshA
81A1 B6 45 ldA *__r5
81A3 87 pshA
81A4 B6 46 ldA *__r6
81A6 87 pshA
81A7 B6 47 ldA *__r7
81A9 87 pshA
81AA B6 48 ldA *__r8
81AC 87 pshA
81AD B6 49 ldA *__r9
81AF 87 pshA
81B0 B6 4A ldA *__r10
81B2 87 pshA
81B3 B6 4B ldA *__r11
81B5 87 pshA
81B6 B6 4C ldA *__rhi
81B8 87 pshA
81B9 B6 4D ldA *__rlo
81BB 87 pshA
81BC A7 FD aiS #-3
81BE 95 tSX
FILE: vectors08.c
(0001) /*-----------------------------------------------------*
(0002) *文件名:vectors08.c *
(0003) *功 能:用于定义中断矢量表 *
(0004) *-----------------------------------------------------*/
(0005) //[头文件]
(0006) #include "Includes.h"
(0007) /*中断接受处理函数------------------------------------*/
(0008) #pragma interrupt_handler isrRe
(0009) void isrRe(void)
(0010) {
81BF 9B seI
(0011) INT8U i,j,no;
(0012) asm("SEI"); //禁止所有中断
(0013) //1:接收数据
(0014) for(i=0;i<15;i++)
81C0 6F 02 clr 2,X
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -