📄 main.lis
字号:
82CE 3FFE .word 16382
82D0 3FFC .word 16380
82D2 200C .word 8204
82D4 401C .word 16412
82D6 0018 .word 24
82D8 0018 .word 24
82DA 0038 .word 56
82DC 0030 .word 48
82DE 0030 .word 48
82E0 0070 .word 112
82E2 0060 .word 96
82E4 0060 .word 96
82E6 00E0 .word 224
82E8 00C0 .word 192
82EA 00C0 .word 192
82EC 01C0 .word 448
82EE 0180 .word 384
82F0 0180 .word 384
82F2 0380 .word 896
82F4 0300 .word 768
82F6 0000 .word 0
82F8 0000 .word 0
82FA 0000 .word 0
82FC 0000 .word 0
82FE 0000 .word 0
8300 0000 .word 0
8302 0000 .word 0
8304 0000 .word 0
8306 0000 .word 0
8308 0000 .word 0
830A 0000 .word 0
830C 07E0 .word 2016
830E 0C38 .word 3128
8310 1818 .word 6168
8312 381C .word 14364
8314 381C .word 14364
8316 381C .word 14364
8318 3C38 .word 15416
831A 1E30 .word 7728
831C 0F60 .word 3936
831E 0780 .word 1920
8320 03E0 .word 992
8322 05F0 .word 1520
8324 0CF8 .word 3320
8326 1878 .word 6264
8328 383C .word 14396
832A 381C .word 14364
832C 381C .word 14364
832E 381C .word 14364
8330 1C18 .word 7192
8332 0E30 .word 3632
8334 07E0 .word 2016
8336 0000 .word 0
8338 0000 .word 0
833A 0000 .word 0
833C 0000 .word 0
833E 0000 .word 0
8340 0000 .word 0
8342 0000 .word 0
8344 0000 .word 0
8346 0000 .word 0
8348 0000 .word 0
834A 0000 .word 0
834C 07C0 .word 1984
834E 0C70 .word 3184
8350 1838 .word 6200
8352 301C .word 12316
8354 701C .word 28700
8356 700E .word 28686
8358 700E .word 28686
835A 700E .word 28686
835C 700E .word 28686
835E 780E .word 30734
8360 380E .word 14350
8362 1C1E .word 7198
8364 0FEC .word 4076
8366 001C .word 28
8368 0038 .word 56
836A 0030 .word 48
836C 0070 .word 112
836E 00E0 .word 224
8370 0180 .word 384
8372 0F00 .word 3840
8374 7800 .word 30720
8376 0000 .word 0
8378 0000 .word 0
837A 0000 .word 0
837C 0000 .word 0
837E 0000 .word 0
8380 .dbsym e BigNumCode _BigNumCode A[640:320]i
.area lit
.area text
0000 .dbfile c:\documents and settings\sd\桌面\25\bake_mcu/Includes.h
0000 .dbfile Main.c
0000 .dbfunc e main _main fV
0000 ; InitTime -> 2,X
0000 ; tmp -> 4,X
0000 ; sum -> 6,X
0000 ; i -> 8,X
0000 _main::
0000 .dbline -1
0000 A7F7 ais #-9
0002 95 tsx
0003 .dbline 26
0003 ; //-------------------------------------------------------------------------*
0003 ; //工程文件名:Bake.prj *
0003 ; //硬件连接: *
0003 ; // TLC2543的CS,I/O CLOCK,DATA INPUT,DATA OUT分别接PTC0,PTD1~PTD3 *
0003 ; // LCD的数据口为PTB0~PTB7,控制口为PTC1~PTC4 *
0003 ; // 报警灯:红灯及蜂鸣器、绿灯、黄灯、Bake阀、Cool阀分别接PTA的第0~4脚 *
0003 ; // 温度电位器、时间电位器、热敏电阻、红外传感器分别接TLC2543的第0~3脚
0003 ; //程序描述:由TLC2543采集来的AD值确定设定时间、设定温度、当前温度和 *
0003 ; // Cool箱中是否有物体 *
0003 ; // 判断如果Bake炉内温度变化超过设定温度一定范围,则红灯闪并报警 *
0003 ; // 否则等加热到设定时间后黄灯闪,切掉Bake炉电源,提示取出加热物体 *
0003 ; // 放入Cool箱,冷却阀闭合,当物体移出Cool箱后,冷却阀断开 *
0003 ; //日 期:2007.04.25 *
0003 ; //-------------------------------------------------------------------------*
0003 ; #include "Includes.h" //总头文件
0003 ;
0003 ; //内部函数声明
0003 ; void LightAlarm(INT8U Light); //通过不同颜色灯闪,提示进一步操作
0003 ; INT16U ConvertCT(INT16U adv); //将AD值转换当前温度
0003 ; INT16U ConvertT(INT16U adv); //将AD值转换设定温度
0003 ; INT16U ConvertTime(INT16U adv); //将AD值转换设定时间
0003 ; void ReFlash(void);
0003 ;
0003 ; //主函数
0003 ; void main()
0003 ; {
0003 .dbline 33
0003 ; INT16U InitTime; //开始计时的基值
0003 ; INT16U tmp;
0003 ; INT8U i;
0003 ; INT16U sum;
0003 ;
0003 ; //初始化
0003 ; DisableMCUInterrupt(); //禁止总中断
0003 9B SEI
0004 .dbline 34
0004 ; MCUInit(); //芯片初始化
0004 CD0000 jsr _MCUInit
0007 .dbline 35
0007 ; SCIInit(); //串口初始化
0007 CD0000 jsr _SCIInit
000A .dbline 36
000A ; LCDInit(); //LCD初始化
000A CD0000 jsr _LCDInit
000D .dbline 37
000D ; Timer1init(); //定时器1初始化,1秒溢出中断
000D CD0000 jsr _Timer1init
0010 .dbline 38
0010 ; Timer2Init(); //定时器2初始化,2通道都是下降沿输入捕捉中断
0010 CD0000 jsr _Timer2Init
0013 .dbline 39
0013 ; SPIInit(); //SPI初始化
0013 CD0000 jsr _SPIInit
0016 .dbline 40
0016 ; LightInit(); //按钮开关灯控制口
0016 CD0000 jsr _LightInit
0019 .dbline 41
0019 ; SwitchOutput_Init(); //开关量输出初始化
0019 CD0000 jsr _SwitchOutput_Init
001C 95 tsx
001D .dbline 42
001D ; EnTm1OverflowInt(); //开放Timer1溢出中断
001D 1C20 bset #6,0x20
001F .dbline 43
001F ; EnableSCIReInt(); //开放串行中断
001F 1A14 bset #5,0x14
0021 L2:
0021 .dbline 47
0021 ;
0021 ; MainLoop:
0021 ; //初始化标志
0021 ; StateFlag=1; //初始状态为1:开绿灯、Bake炉电源
0021 A601 lda #1
0023 C7007B sta _StateFlag
0026 .dbline 48
0026 ; CoolFlag=0; //开始工作时,Cool箱中是没物体的
0026 4F clra
0027 C7007A sta _CoolFlag
002A .dbline 49
002A ; SendFlag=0; //需要向PC发显示参数时在串行中断里置1
002A 4F clra
002B C70077 sta _SendFlag
002E .dbline 50
002E ; FlashFlag1=0; //需要校准当前温度时在串行中断里置1
002E 4F clra
002F C70076 sta _FlashFlag1
0032 .dbline 51
0032 ; FlashFlag2=0; //需要修改MCU号时在串行中断里置1
0032 4F clra
0033 C70075 sta _FlashFlag2
0036 .dbline 52
0036 ; ResetFlag=0; //复位按钮没被按下,捕捉中断里置1
0036 4F clra
0037 C70079 sta _ResetFlag
003A .dbline 53
003A ; BakeFlag=0; //Bake炉电源重启开关没被按下,捕捉中断里置1
003A 4F clra
003B C70078 sta _BakeFlag
003E .dbline 56
003E ;
003E ; //初始化全局变量(预防措施)
003E ; ScdTim=0;
003E 4F clra
003F C70084 sta _ScdTim
0042 .dbline 57
0042 ; MntTim=0; //按复位键后计时应清0的!否则可能溢出
0042 4F clra
0043 C70082 sta _MntTim
0046 4F clra
0047 C70083 sta _MntTim+1
004A .dbline 59
004A ;
004A ; EnableMCUInterrupt(); //开放总中断
004A 9A CLI
004B CC03F1 jmp L4
004E L3:
004E .dbline 63
004E ;
004E ; //主循环
004E ; while(1)
004E ; {
004E .dbline 66
004E ;
004E ; //1 采集A/D值,转换为设定温度、设定时间、当前温度和红外传感器值
004E ; sum=0;
004E 6F07 clr 7,X
0050 6F06 clr 6,X
0052 .dbline 67
0052 ; for(i=0;i<2;i++)
0052 6F08 clr 8,X
0054 201E bra L9
0056 L6:
0056 .dbline 68
0056 .dbline 69
0056 A68F lda #<_ADValue
0058 87 psha
0059 A68F lda #>_ADValue
005B 87 psha
005C 4F clra
005D 87 psha
005E CD0000 jsr _ADC11P
0061 A703 ais #3
0063 95 tsx
0064 .dbline 70
0064 E607 lda 7,X
0066 CB0090 add _ADValue+1
0069 E707 sta 7,X
006B E606 lda 6,X
006D C9008F adc _ADValue
0070 E706 sta 6,X
0072 .dbline 71
0072 L7:
0072 .dbline 67
0072 6C08 inc 8,X
0074 L9:
0074 .dbline 67
0074 E608 lda 8,X
0076 A102 cmp #2
0078 25DC blo L6
007A .dbline 72
007A ; {
007A ; ADC11P(0,ADValue);
007A ; sum+=ADValue[0];
007A ; }
007A ; sum/=2;
007A 6406 lsr 6,X
007C 6607 ror 7,X
007E .dbline 73
007E ; CurtTmp=ConvertCT(sum); //第0路为当前温度
007E E607 lda 7,X
0080 87 psha
0081 E606 lda 6,X
0083 87 psha
0084 CD03F7 jsr _ConvertCT
0087 A702 ais #2
0089 B600 lda *__r0
008B C7008D sta _CurtTmp
008E B600 lda *__r1
0090 C7008E sta _CurtTmp+1
0093 .dbline 79
0093 ;
0093 ; /*
0093 ; ADC11P(0,ADValue);
0093 ; CurtTmp=ConvertCT(ADValue[0]); //第0路为当前温度
0093 ; */
0093 ; Temper=ConvertT(ADValue[1]); //第1路为设定温度
0093 C60092 lda _ADValue+2+1
0096 87 psha
0097 C60091 lda _ADValue+2
009A 87 psha
009B CD065C jsr _ConvertT
009E A702 ais #2
00A0 B600 lda *__r0
00A2 C7008B sta _Temper
00A5 B600 lda *__r1
00A7 C7008C sta _Temper+1
00AA .dbline 80
00AA ; Time=ConvertTime(ADValue[2]); //第2路为设定时间
00AA C60094 lda _ADValue+4+1
00AD 87 psha
00AE C60093 lda _ADValue+4
00B1 87 psha
00B2 CD06CF jsr _ConvertTime
00B5 A702 ais #2
00B7 B600 lda *__r0
00B9 C70087 sta _Time
00BC B600 lda *__r1
00BE C70088 sta _Time+1
00C1 .dbline 82
00C1 ; //Time=1;
00C1 ; Infrared=ADValue[3]; //第3路为红外传感器的值
00C1 C60095 lda _ADValue+6
00C4 C70085 sta _Infrared
00C7 C60096 lda _ADValue+6+1
00CA C70086 sta _Infrared+1
00CD .dbline 83
00CD ; ADCurtTmp=ADValue[0]; //校准当前温度时写flash用
00CD C6008F lda _ADValue
00D0 C70080 sta _ADCurtTmp
00D3 C60090 lda _ADValue+1
00D6 C70081 sta _ADCurtTmp+1
00D9 .dbline 88
00D9 ;
00D9 ;
00D9 ; //2 LCD显示每1s刷新一次
00D9 ; //将需要显示的各数据转换成LCD可显示的格式,并放入LcdShowBuff中
00D9 ; InBuff(CurtTmp,Temper,CurtTime,Time,LcdShowBuff);
00D9 A600 lda #<_LcdShowBuff
00DB 87 psha
00DC A600 lda #>_LcdShowBuff
00DE 87 psha
00DF C60088 lda _Time+1
00E2 87 psha
00E3 C60087 lda _Time
00E6 87 psha
00E7 C6008A lda _CurtTime+1
00EA 87 psha
00EB C60089 lda _CurtTime
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -