⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.lst

📁 加热器的温度控制
💻 LST
📖 第 1 页 / 共 5 页
字号:
A51 MACRO ASSEMBLER      MAIN                                                                DATE  28/01/02   PAGE     1


MS-DOS MACRO ASSEMBLER A51 V4.4 
OBJECT MODULE PLACED IN MAIN.OBJ
ASSEMBLER INVOKED BY:  A51 MAIN.ASM DEBUG

LOC  OBJ            LINE     SOURCE

                       1     ;数字温度控制显示程序(误差补偿法) (CPU:89C2051 晶体:12MHz)
                       2     ;作者:高宇
                       3     ;2001、3、17
                       4     
                       5     ;主程序用工作寄存器:第0组
                       6     ;定时测量工作寄存器:第1组
                       7     ;显示用工作寄存器:  第2组
                       8     ;AT24C02读写工作寄存器:第3组
                       9     
                      10     ;注:在调试板中,加热控制为P1.7,I2C器件开启为P1.6,而在实际电路板中相反
                      11     
                      12     MainRAM         SEGMENT DATA
                      13     MainMark        SEGMENT BIT
                      14     
                      22     $LIST
                      23     
                      24     ;*************************************************************
                      25     
  000A                26     SetTimer        EQU     10      ;数码管闪烁频率设置
  00C8                27     SetWaitTimer    EQU     200     ;设置加热温度时,键没按下后等待返回温度显示的时间
  0014                28     SetChangSpeed1  EQU     20      ;设定按住键盘后正常速度时增加或减少控制温度的速度()
  0004                29     SetChangSpeed2  EQU     4       ;设定按住键盘一段时间后快速增加或减少控制温度的速度()
  0005                30     SetPushKeyMum   EQU     5       ;同一键按住五个闪烁周期后加速控制温度设定速度
  0003                31     SetDisplayBit   EQU     3       ;设置显示的位数
                      32     
  0001                33     TempUpH         EQU     01H
  002C                34     TempUpL         EQU     2CH     ;设定温度上限为300度
  0000                35     TempDownH       EQU     00H
  0000                36     TempDownL       EQU     00H     ;设定温度下限为0度
                      37     
  0005                38     SetCompKey      EQU     5       ;连续读5次,键值相同说明按下了一个键
  0010                39     UpKey           EQU     10H     ;上键
  0011                40     DownKey         EQU     11H     ;下键
  0012                41     SetKey          EQU     12H     ;设定键
  0055                42     UnKey           EQU     55H     ;无键
                      43     
  0000                44     TempOffset      EQU     00H     ;滞回比较温度   ;
                      45     ;-------------------------------------------------------------
                      46     ;DATA 20H
----                  47     RSEG    MainMark
                      48     
0000                  49     XSBJ:           DBIT    1       ;数码管显示标记(0 不显示  1 显示)
0001                  50     FHBJ:           DBIT    1       ;返回温度显示(0 不返回 1 返回)
0002                  51     ChangOk:        DBIT    1       ;改变控制温度允许与否标记(0 否 1 可)
0003                  52     DisplayStatu:   DBIT    1       ;数码管显示状态(0 不闪烁  1 闪烁)
0004                  53     SetTempChang:   DBIT    1       ;上一步重新设定了控制温度(1 重新设定  0 没有)
0005                  54     ReadTempOK:     DBIT    1       ;已经读取了温度
0006                  55     TempContr:      DBIT    1       ;是否加热标记
                      56     
0007                  57     TestCon:        DBIT    1       ;确定采样基准值还是实际值
0008                  58     Timerout:       DBIT    1       ;温度测量时间溢出标志
                      59     ;-------------------------------------------------------------
----                  60     RSEG    MAINRAM
                      61     
A51 MACRO ASSEMBLER      MAIN                                                                DATE  28/01/02   PAGE     2


LOC  OBJ            LINE     SOURCE

0000                  62     SetTempHBak1:   DS      1
0001                  63     SetTempLBak1:   DS      1       ;设定温度值存贮
                      64     
0002                  65     VIH:            DS      1       ;待测电压整数部分
0003                  66     VIL:            DS      1       ;待测电压小数部分
                      67     
0004                  68     VIHT:           DS      1       ;待测电压或基准电压整数部分
0005                  69     VILT:           DS      1       ;待测电压或基准电压小数部分
                      70     
                      71     
0006                  72     CLOCK:          DS      1       ;检测次数计数器
0007                  73     TOTALH:         DS      1       ;临时累加器高字节
0008                  74     TOTALM:         DS      1       ;临时累加器中字节
0009                  75     TOTALL:         DS      1       ;临时累加器低字节
000A                  76     DisPort:        DS      1       ;动态显示时应显示的数码管号
000B                  77     Mumber0:        DS      1       ;第一个数码管显示数值
000C                  78     Mumber1:        DS      1       ;第二个数码管显示数值
000D                  79     Mumber2:        DS      1       ;第三个数码管显示数值
                      80     
000E                  81     Timer:          DS      1       ;时间基准(65ms)
000F                  82     Timer1:         DS      1       ;时间基准(65ms)
0010                  83     Timer2:         DS      1       ;时间基准(65ms)
                      84     
0011                  85     KeyCount:       DS      1       ;同一键按下计数
0012                  86     KeyCodeTemp:    DS      1       ;键值缓存
0013                  87     KeyCode:        DS      1       ;保存键值
                      88     
0014                  89     SetTempH:       DS      1
0015                  90     SetTempL:       DS      1       ;设定温度值存贮
0016                  91     ChangSpeed:     DS      1       ;控制温度设定时速度
0017                  92     PushKeyMumber:  DS      1       ;同一键一直按下次数
0018                  93     UpPushKeyCode:  DS      1       ;上一次按键保存
                      94     
0019                  95     BeforTempH:     DS      1
001A                  96     BeforTempL:     DS      1       ;上一次温度保存
001B                  97     TempH:          DS      1
001C                  98     TempL:          DS      1
                      99     
                     100     
001D                 101     SetTempHBak2:   DS      1
001E                 102     SetTempLBak2:   DS      1       ;设定温度值存贮
                     103     
001F                 104     TempSub :       DS      1       ;保存实际温度与控制温度差值
0020                 105     ContrlMumber:   DS      1
                     106     
0021                 107     Counter:        DS      1       ;计数器
0022                 108     ProgramAddressT1:       DS      2;断点地址保存
                     109     
                     110     ;-------------------------------------------------------------
0024                 111     TempOffsetH:    DS      1
0025                 112     TempOffsetL:    DS      1       ;温度误差
                     113     ;-------------------------------------------------------------
  0010               114     SetTempHE2PROM1 EQU     010H
  0011               115     SetTempLE2PROM1 EQU     011H
                     116     
  0030               117     SetTempHE2PROM2 EQU     030H
  0031               118     SetTempLE2PROM2 EQU     031H
                     119     
  0050               120     SetTempHE2PROM3 EQU     050H
A51 MACRO ASSEMBLER      MAIN                                                                DATE  28/01/02   PAGE     3


LOC  OBJ            LINE     SOURCE

  0051               121     SetTempLE2PROM3 EQU     051H    ;设定好的控制温度值保存地址及备份地址
                     122     ;-------------------------------------------------------------
                     123     
                     124     
  0092               125     RC              BIT     P1.2    ;92h ;RC充放电控制端口(低电平放电)
  0092               126     KeyPort         BIT     P1.2    ;键输入口
                     127     
  00B6               128     JUDE            BIT     P3.6    ;0B6H;比较电压判断口
                     129     
  0095               130     XM0             BIT     P1.5    ;第三个数码管控制口/设置键
  0094               131     XM1             BIT     P1.4    ;第四个数码管控制口/下键/采样实际值
  0093               132     XM2             BIT     P1.3    ;第五个数码管控制口/上键/采样基准值
                     133     
  0096               134     TempContrPort   BIT     P1.6    ;加热控制(1 加热  0 停止)
                     135     ;*************************************************************
                     136     ISEG    AT      05FH
005F                 137     STACK:  DS      01EH
                     138     ;分配堆栈
                     139     
                     140     
                     141     
                     142     CSEG    AT      0000H
                     143     USING   0
                     144     ;使用第0组寄存器
0000                 145     Start:
0000 020026          146             LJMP    Main            ;主程序
                     147     ;-------------------------------------------------------------
                     148     
                     149     CSEG    AT      0003H
0003 020000          150             LJMP    Start
                     151     
                     152     CSEG    AT      000BH
000B 0202A8          153             LJMP    DINS            ;T0:定时中断子程序
                     154     
                     155     CSEG    AT      0013H
0013 020000          156             LJMP    Start
                     157     
                     158     CSEG    AT      001BH
001B 02023F          159             LJMP    DINS1           ;T1:定时中断子程序
                     160     
                     161     CSEG    AT      0023H
0023 020000          162             LJMP    Start
                     163     
                     164     ;-------------------------------------------------------------
                     165     CSEG    AT      026H
0026                 166     Main:
                     167     
                     168     
0026 C200     F      169             CLR     TempContr
                     170     
0028 75815E          171             MOV     SP,#STACK-1
                     172             ;设置堆栈
002B C2AF            173             CLR     EA
002D 7820            174             MOV     R0,#20H
002F                 175     CLEAR:
002F F6              176             MOV     @R0,A           ;清零片内单元
0030 08              177             INC     R0
0031 B85FFB          178             CJNE    R0,#5FH,CLEAR
                     179     
A51 MACRO ASSEMBLER      MAIN                                                                DATE  28/01/02   PAGE     4


LOC  OBJ            LINE     SOURCE

0034 C200     F      180             CLR     ReadTempOK
                     181     
0036 750000   F      182             MOV     DisPort,#00H    ;显示第1个数码管
0039 750055   F      183             MOV     KeyCode,#UnKey
003C 750055   F      184             MOV     KeyCodeTemp,#UnKey
                     185     
003F C2AF            186             CLR     EA
0041 758911          187             MOV     TMOD,#11H       ;定时器设置
0044 758CD8          188             MOV     TH0,#0D8H       ;约10mS检测一次
0047 D292            189             SETB    RC              ;电容放电
                     190     
0049 750000   F      191             MOV     ContrlMumber,#00H
004C 750000   F      192             MOV     VIH,#00H
004F 750000   F      193             MOV     VIL,#00H
0052 750000   F      194             MOV     TempH,#00H
0055 750000   F      195             MOV     TempL,#00H   
                     196     
                     197     
0058 750000   F      198             MOV     TempOffsetH , #00H
005B 750000   F      199             MOV     TempOffsetL , #00H      ;起始时设置测量误差为0
005E C200     F      200             CLR     TestCon
                     201     
0060 C200     F      202             CLR     Timerout        ;起始时温度测量没有溢出
                     203     
0062                 204     MainEncrypt:
0062 120122          205             LCALL   SetTemp         ;启动时显示控制温度
                     206     
0065 7400            207             MOV     A,#00H
0067 12040A          208             LCALL   SetDisplayMode  ;数码管常亮
006A                 209     LOOP:
006A D2AF            210             SETB    EA
                     211             
006C 300003   F      212             JNB     ReadTempOK,LOOP00
006F 1200C9          213             LCALL   CompTemp    
                     214             
0072                 215     LOOP00:
                     216             
0072 E500     F      217             MOV     A , TempOffsetH
0074 5480            218             ANL     A , #10000000B          ;最高位表示误差方向
0076 6011            219             JZ      LOOP101
0078 C3              220             CLR     C
0079 E500     F      221             MOV     A , VIL
007B 9500     F      222             SUBB    A , TempOffsetL
007D FB              223             MOV     R3 , A
007E E500     F      224             MOV     A , TempOffsetH
0080 547F            225             ANL     A , #01111111B
0082 FA              226             MOV     R2 , A
0083 E500     F      227             MOV     A , VIH
0085 9A              228             SUBB    A , R2
0086 FA              229             MOV     R2 , A
0087 0193            230             AJMP    LOOP102
0089                 231     LOOP101:
0089 E500     F      232             MOV     A , VIL

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -