📄 main.s
字号:
.module Main.c
.area data
_LcdShowBuff::
.blkb 64
.area idata
.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
.byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
.byte 32,32,32,32,32,32,32,32,32,32,32,32,199,224,208,199
.area data
.dbfile c:\documents and settings\sd\桌面\25\bake_mcu/Includes.h
.dbsym e LcdShowBuff _LcdShowBuff A[64:64]c
.area memory(abs)
.org 0x8000
.dbfile c:\documents and settings\sd\桌面\25\bake_mcu/Includes.h
_MCUno::
.byte 131
.dbsym e MCUno _MCUno c
_Tmin::
.byte 25
.dbsym e Tmin _Tmin c
_Tmax::
.word 180
.dbsym e Tmax _Tmax i
_TADmin::
.word 128
.dbsym e TADmin _TADmin i
_TADmax::
.word 385
.dbsym e TADmax _TADmax i
.area lit
.area memory(abs)
.org 0x8080
.dbfile c:\documents and settings\sd\桌面\25\bake_mcu/Includes.h
_ADtoPHY_X::
.word 635
.word 663
.word 718
.word 781
.word 844
.word 908
.word 1011
.word 1062
.word 1113
.word 1235
.dbsym e ADtoPHY_X _ADtoPHY_X A[20:10]i
_ADtoPHY_k1::
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.dbsym e ADtoPHY_k1 _ADtoPHY_k1 A[20:10]i
_ADtoPHY_k2::
.word 39
.word 290
.word 290
.word 286
.word 281
.word 275
.word 268
.word 231
.word 205
.word 162
.dbsym e ADtoPHY_k2 _ADtoPHY_k2 A[20:10]i
_ADtoPHY_b0::
.word 0
.word 1
.word 1
.word 1
.word 1
.word 1
.word 1
.word 1
.word 1
.word 0
.dbsym e ADtoPHY_b0 _ADtoPHY_b0 A[20:10]i
_ADtoPHY_b1::
.word 0
.word 158
.word 158
.word 153
.word 147
.word 139
.word 130
.word 85
.word 53
.word 0
.dbsym e ADtoPHY_b1 _ADtoPHY_b1 A[20:10]i
_ADtoPHY_b2::
.word 0
.word 409
.word 317
.word 634
.word 442
.word 907
.word 802
.word 547
.word 70
.word 0
.dbsym e ADtoPHY_b2 _ADtoPHY_b2 A[20:10]i
.area lit
.area memory(abs)
.org 0x8100
.dbfile c:\documents and settings\sd\桌面\25\bake_mcu/Includes.h
_BigNumCode::
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 896
.word 3168
.word 2096
.word 6192
.word 12312
.word 12312
.word 12312
.word 12312
.word 28700
.word 28700
.word 28700
.word 28700
.word 28700
.word 12312
.word 12312
.word 12312
.word 12312
.word 6192
.word 6192
.word 3168
.word 896
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 64
.word 960
.word 960
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 448
.word 4088
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 1984
.word 8176
.word 12408
.word 24636
.word 16444
.word 28
.word 28
.word 28
.word 24
.word 56
.word 48
.word 96
.word 64
.word 192
.word 384
.word 768
.word 1536
.word 3074
.word 6150
.word 16380
.word 32764
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 1984
.word 4080
.word 6264
.word 8248
.word 24
.word 24
.word 16
.word 32
.word 64
.word 496
.word 2040
.word 248
.word 60
.word 28
.word 12
.word 12
.word 12
.word 8
.word 14352
.word 15392
.word 8128
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 48
.word 112
.word 240
.word 240
.word 368
.word 368
.word 624
.word 1136
.word 1136
.word 2160
.word 6256
.word 4208
.word 8304
.word 24688
.word 32766
.word 32766
.word 112
.word 112
.word 112
.word 112
.word 112
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 1016
.word 2032
.word 2032
.word 2048
.word 2048
.word 7680
.word 8064
.word 16352
.word 1008
.word 240
.word 120
.word 56
.word 24
.word 24
.word 24
.word 24
.word 16
.word 48
.word 12384
.word 16320
.word 7936
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 60
.word 224
.word 896
.word 1792
.word 3584
.word 7168
.word 6144
.word 14336
.word 13280
.word 31856
.word 28728
.word 28732
.word 28700
.word 28700
.word 28700
.word 28700
.word 12316
.word 14360
.word 6192
.word 3184
.word 1984
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 8190
.word 16382
.word 16380
.word 8204
.word 16412
.word 24
.word 24
.word 56
.word 48
.word 48
.word 112
.word 96
.word 96
.word 224
.word 192
.word 192
.word 448
.word 384
.word 384
.word 896
.word 768
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 2016
.word 3128
.word 6168
.word 14364
.word 14364
.word 14364
.word 15416
.word 7728
.word 3936
.word 1920
.word 992
.word 1520
.word 3320
.word 6264
.word 14396
.word 14364
.word 14364
.word 14364
.word 7192
.word 3632
.word 2016
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 0
.word 1984
.word 3184
.word 6200
.word 12316
.word 28700
.word 28686
.word 28686
.word 28686
.word 28686
.word 30734
.word 14350
.word 7198
.word 4076
.word 28
.word 56
.word 48
.word 112
.word 224
.word 384
.word 3840
.word 30720
.word 0
.word 0
.word 0
.word 0
.word 0
.dbsym e BigNumCode _BigNumCode A[640:320]i
.area lit
.area text
.dbfile c:\documents and settings\sd\桌面\25\bake_mcu/Includes.h
.dbfile Main.c
.dbfunc e main _main fV
; InitTime -> 2,X
; tmp -> 4,X
; sum -> 6,X
; i -> 8,X
_main::
.dbline -1
ais #-9
tsx
.dbline 26
; //-------------------------------------------------------------------------*
; //工程文件名:Bake.prj *
; //硬件连接: *
; // TLC2543的CS,I/O CLOCK,DATA INPUT,DATA OUT分别接PTC0,PTD1~PTD3 *
; // LCD的数据口为PTB0~PTB7,控制口为PTC1~PTC4 *
; // 报警灯:红灯及蜂鸣器、绿灯、黄灯、Bake阀、Cool阀分别接PTA的第0~4脚 *
; // 温度电位器、时间电位器、热敏电阻、红外传感器分别接TLC2543的第0~3脚
; //程序描述:由TLC2543采集来的AD值确定设定时间、设定温度、当前温度和 *
; // Cool箱中是否有物体 *
; // 判断如果Bake炉内温度变化超过设定温度一定范围,则红灯闪并报警 *
; // 否则等加热到设定时间后黄灯闪,切掉Bake炉电源,提示取出加热物体 *
; // 放入Cool箱,冷却阀闭合,当物体移出Cool箱后,冷却阀断开 *
; //日 期:2007.04.25 *
; //-------------------------------------------------------------------------*
; #include "Includes.h" //总头文件
;
; //内部函数声明
; void LightAlarm(INT8U Light); //通过不同颜色灯闪,提示进一步操作
; INT16U ConvertCT(INT16U adv); //将AD值转换当前温度
; INT16U ConvertT(INT16U adv); //将AD值转换设定温度
; INT16U ConvertTime(INT16U adv); //将AD值转换设定时间
; void ReFlash(void);
;
; //主函数
; void main()
; {
.dbline 33
; INT16U InitTime; //开始计时的基值
; INT16U tmp;
; INT8U i;
; INT16U sum;
;
; //初始化
; DisableMCUInterrupt(); //禁止总中断
SEI
.dbline 34
; MCUInit(); //芯片初始化
jsr _MCUInit
.dbline 35
; SCIInit(); //串口初始化
jsr _SCIInit
.dbline 36
; LCDInit(); //LCD初始化
jsr _LCDInit
.dbline 37
; Timer1init(); //定时器1初始化,1秒溢出中断
jsr _Timer1init
.dbline 38
; Timer2Init(); //定时器2初始化,2通道都是下降沿输入捕捉中断
jsr _Timer2Init
.dbline 39
; SPIInit(); //SPI初始化
jsr _SPIInit
.dbline 40
; LightInit(); //按钮开关灯控制口
jsr _LightInit
.dbline 41
; SwitchOutput_Init(); //开关量输出初始化
jsr _SwitchOutput_Init
tsx
.dbline 42
; EnTm1OverflowInt(); //开放Timer1溢出中断
bset #6,0x20
.dbline 43
; EnableSCIReInt(); //开放串行中断
bset #5,0x14
L2:
.dbline 47
;
; MainLoop:
; //初始化标志
; StateFlag=1; //初始状态为1:开绿灯、Bake炉电源
lda #1
sta _StateFlag
.dbline 48
; CoolFlag=0; //开始工作时,Cool箱中是没物体的
clra
sta _CoolFlag
.dbline 49
; SendFlag=0; //需要向PC发显示参数时在串行中断里置1
clra
sta _SendFlag
.dbline 50
; FlashFlag1=0; //需要校准当前温度时在串行中断里置1
clra
sta _FlashFlag1
.dbline 51
; FlashFlag2=0; //需要修改MCU号时在串行中断里置1
clra
sta _FlashFlag2
.dbline 52
; ResetFlag=0; //复位按钮没被按下,捕捉中断里置1
clra
sta _ResetFlag
.dbline 53
; BakeFlag=0; //Bake炉电源重启开关没被按下,捕捉中断里置1
clra
sta _BakeFlag
.dbline 56
;
; //初始化全局变量(预防措施)
; ScdTim=0;
clra
sta _ScdTim
.dbline 57
; MntTim=0; //按复位键后计时应清0的!否则可能溢出
clra
sta _MntTim
clra
sta _MntTim+1
.dbline 59
;
; EnableMCUInterrupt(); //开放总中断
CLI
jmp L4
L3:
.dbline 63
;
; //主循环
; while(1)
; {
.dbline 66
;
; //1 采集A/D值,转换为设定温度、设定时间、当前温度和红外传感器值
; sum=0;
clr 7,X
clr 6,X
.dbline 67
; for(i=0;i<2;i++)
clr 8,X
bra L9
L6:
.dbline 68
.dbline 69
lda #<_ADValue
psha
lda #>_ADValue
psha
clra
psha
jsr _ADC11P
ais #3
tsx
.dbline 70
lda 7,X
add _ADValue+1
sta 7,X
lda 6,X
adc _ADValue
sta 6,X
.dbline 71
L7:
.dbline 67
inc 8,X
L9:
.dbline 67
lda 8,X
cmp #2
blo L6
.dbline 72
; {
; ADC11P(0,ADValue);
; sum+=ADValue[0];
; }
; sum/=2;
lsr 6,X
ror 7,X
.dbline 73
; CurtTmp=ConvertCT(sum); //第0路为当前温度
lda 7,X
psha
lda 6,X
psha
jsr _ConvertCT
ais #2
lda *__r0
sta _CurtTmp
lda *__r1
sta _CurtTmp+1
.dbline 79
;
; /*
; ADC11P(0,ADValue);
; CurtTmp=ConvertCT(ADValue[0]); //第0路为当前温度
; */
; Temper=ConvertT(ADValue[1]); //第1路为设定温度
lda _ADValue+2+1
psha
lda _ADValue+2
psha
jsr _ConvertT
ais #2
lda *__r0
sta _Temper
lda *__r1
sta _Temper+1
.dbline 80
; Time=ConvertTime(ADValue[2]); //第2路为设定时间
lda _ADValue+4+1
psha
lda _ADValue+4
psha
jsr _ConvertTime
ais #2
lda *__r0
sta _Time
lda *__r1
sta _Time+1
.dbline 82
; //Time=1;
; Infrared=ADValue[3]; //第3路为红外传感器的值
lda _ADValue+6
sta _Infrared
lda _ADValue+6+1
sta _Infrared+1
.dbline 83
; ADCurtTmp=ADValue[0]; //校准当前温度时写flash用
lda _ADValue
sta _ADCurtTmp
lda _ADValue+1
sta _ADCurtTmp+1
.dbline 88
;
;
; //2 LCD显示每1s刷新一次
; //将需要显示的各数据转换成LCD可显示的格式,并放入LcdShowBuff中
; InBuff(CurtTmp,Temper,CurtTime,Time,LcdShowBuff);
lda #<_LcdShowBuff
psha
lda #>_LcdShowBuff
psha
lda _Time+1
psha
lda _Time
psha
lda _CurtTime+1
psha
lda _CurtTime
psha
lda _Temper+1
psha
lda _Temper
psha
lda _CurtTmp+1
psha
lda _CurtTmp
psha
jsr _InBuff
ais #10
.dbline 90
; //显示LcdShowBuff中的数据
; LcdShCh(LcdShowBuff);
lda #<_LcdShowBuff
psha
lda #>_LcdShowBuff
psha
jsr _LcdShCh
ais #2
.dbline 92
; //在Lcd上显示自定义32*16点阵的字符
; LcdShBigNum(0,0,(INT16U *)BigNumCode,CurtTmp);
lda _CurtTmp+1
psha
lda _CurtTmp
psha
lda #<_BigNumCode
psha
lda #>_BigNumCode
psha
clra
psha
psha
jsr _LcdShBigNum
ais #6
tsx
.dbline 97
;
;
;
; //2 将校准参数或MCU号写Flash
; if((FlashFlag1==1) ||(FlashFlag2==1)) //需要将校准值或MCU号写flash
lda _FlashFlag1
cmp #1
beq L15
lda _FlashFlag2
cmp #1
bne L13
L15:
.dbline 98
; {
.dbline 99
; ReFlash();
jsr _ReFlash
tsx
.dbline 101
;
; CurtTmp=ConvertCT(sum); //第0路为当前温度
lda 7,X
psha
lda 6,X
psha
jsr _ConvertCT
ais #2
lda *__r0
sta _CurtTmp
lda *__r1
sta _CurtTmp+1
.dbline 102
; LcdShBigNum(0,0,(INT16U *)BigNumCode,CurtTmp);
lda _CurtTmp+1
psha
lda _CurtTmp
psha
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -