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

📄 tcmain.lst

📁 51单片机用汇编实例 包括ad
💻 LST
字号:
A51 MACRO ASSEMBLER  TCMAIN                                                               01/04/2006 09:01:46 PAGE     1


MACRO ASSEMBLER A51 V7.09
OBJECT MODULE PLACED IN TCmain.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE TCmain.asm SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

                       1     ; 闭环温度控制实验说明
                       2     ; 实验在联机调试时,需要修改如下一些参数
                       3     ; 实验时,按照参考参数将各单元中的数据先进行修改,再运行程序
                       4     ;======================================================================================
                       5     ; 符号  单元    参考参数        单位    取值范围        名称及作用
                       6     ; TK    39H       30H           10ms    00H--FFH        采样周期:决定数据采集快慢程度
                       7     ; SPEC  3AH       28H           ℃      14H--46H        数字给定:要求温控单元达到的温度
                       8     ; IBAND 3BH       60H                   00H--7FH        积分分离值:PID算法中积分分离值
                       9     ; KPP   40H(高)   1FH                   0000H--1FFFH    比例系数:PID中比例项系数值
                      10     ;       41H(低)   10H                   (0--2倍)        
                      11     ; KII   42H(高)   00H           10ms    0001H--1FFFH    积分系数:PID中积分项系数值
                      12     ;       43H(低)   14H                   (1--8192毫秒)   
                      13     ; KDD   44H(高)   00H           10ms    0000H--1FFFH    微分系数:PID中微分项系数值
                      14     ;       45H(低)   20H                   (0--8192毫秒)   
                      15     ;======================================================================================
                      16     
0000                  17             ORG     0000H
0000 020030           18             LJMP    MAIN
                      19     
0013                  20             ORG     0013H
0013 0200C7           21             LJMP    IINT1       ;外部中断1,读AD转换结果
                      22     
000B                  23             ORG     000BH       ;定时器T0,启动AD转换
000B 0200E0           24             LJMP    TT0
                      25              
001B                  26             ORG     001BH
001B 020150           27             LJMP    TT1
                      28     
0030                  29             ORG     0030H
0030 758108           30     MAIN:   MOV     SP,#08H
0033 12006E           31             LCALL   INIT        ;初始化,开中断
0036 C27F             32             CLR     7FH         ;AD-MARK=0  7FH中存放采样标志位
                      33     
0038 307FFD           34     WAIT1:  JNB     7FH,WAIT1   ;判断采样值形成否
003B C27F             35             CLR     7FH         ;7FH=1表示形成采样
                      36             
003D E538             37             MOV     A,38H       ;38H中为AD转换值
003F 90015C           38             MOV     DPTR,#TAB1                 
0042 93               39             MOVC    A,@A+DPTR   ;查温度表
                      40             
0043 F55B             41             MOV     5BH,A       ;5BH中为反馈Yk
                      42         
0045 120269           43             LCALL   PID         ;调用PID子程序进行运算得到控制量
0048 C3               44             CLR     C
0049 E558             45             MOV     A,58H       ;58H中为CK
004B 9480             46             SUBB    A,#80H
004D 4005             47             JC      IS0         ;产生PWM脉冲,CY为1跳转
004F F568             48             MOV     68H,A       ;68H中为a原值
0051 020058           49             LJMP    COU         ;传送结果显示
                      50     
0054 7400             51     IS0:    MOV     A,#00H
0056 F568             52             MOV     68H,A       ;a原值清零
                      53     
0058 120066           54     COU:    LCALL   COUNTA      ;产生PWM脉冲
                      55     
005B E53A             56             MOV   A,3AH         ;3AH中为给定温度
005D F534             57             MOV   34H,A         ;34H中为显示子程序给定值
                      58              
A51 MACRO ASSEMBLER  TCMAIN                                                               01/04/2006 09:01:46 PAGE     2

005F E55B             59             MOV   A,5BH         ;5BH中为反馈Yk
0061 F530             60             MOV   30H,A         ;30H为显示子程序采样值
0063 020038           61             LJMP    WAIT1       ;跳转至判断采样址形成否
0066                  62     COUNTA: 
0066 C3               63             CLR     C
0067 747F             64             MOV     A,#07FH
0069 9568             65             SUBB    A,68H       ;不带符号位求补码
006B F55C             66             MOV     5CH,A       ;B原值
006D 22               67             RET
                      68     
                      69     ;*****************
                      70     ; 初始化子程序
                      71     ;*****************
006E 7400             72     INIT:   MOV     A,#00H
0070 7850             73             MOV     R0,#50H
0072 F6               74     I1:     MOV     @R0,A
0073 08               75             INC     R0
0074 B880FB           76             CJNE    R0,#80H,I1      ;50H----80H赋初值0
                      77     
0077 753930           78             MOV     39H, #30H       ;参数初始化
007A 753A28           79             MOV     3AH, #28H
007D 753B60           80             MOV     3BH, #60H
0080 75401F           81             MOV     40H, #1FH       ;KP
0083 754110           82             MOV     41H, #10H
0086 754200           83             MOV     42H, #00H       ;KI
0089 754314           84             MOV     43H, #14H
008C 754400           85             MOV     44H, #00H       ;KD
008F 754520           86             MOV     45H, #20H
                      87     
0092 753000           88             MOV     30H,#00H
0095 753400           89             MOV     34H,#00H
                      90     
0098 755E01           91             MOV     5EH,#01H        ;5EH标志位,将CK送入PWM的标志位
009B 756A7F           92             MOV     6AH,#7FH        ;6AH中存放a原值
009E 75687F           93             MOV     68H,#7FH        ;68H中存放B原值
00A1 759000           94             MOV     90H,#00H        ;P1.0=0开始加热
00A4 C27F             95             CLR     7FH             ;7FH 采样标志清零
                      96      
00A6 758911           97             MOV     TMOD,#11H       ;TMOD(89H)T1,T0为16位定时器
                      98            
00A9 75B802           99             MOV     IP,#02H         ;PT0 定时器0为高优先级
                     100             
00AC D28A            101             SETB    IT1             ;IT1(TCON)边沿触发方式INT1为负跳变有效
                     102                                     ;所以ADC0809的EOC经过非门与INT1连接
00AE D2AA            103             SETB    EX1             ;EX1(IE)允许INT1中断
                     104             
00B0 758CD8          105             MOV     TH0,#0D8H
00B3 758AEF          106             MOV     TL0,#0EFH       ;T0 10MS
                     107     
00B6 758DD8          108             MOV     TH1,#0D8H       ;改变定时中断的时间可以改正LED显示时一个灯特别亮的问题
00B9 758BEF          109             MOV     TL1,#0EFH 
                     110      
                     111             ;MOV    TH1,#0E8H       
                     112             ;MOV    TL1,#00H
                     113     
00BC D2A9            114             SETB    ET0          ;ET0(IE)允许定时器0中
00BE D2AB            115             SETB    ET1
00C0 D28C            116             SETB    TR0          ;(TCON.4)TR0=1启动定时器T0
                     117     
00C2 D28E            118             SETB    TR1
                     119     
00C4 D2AF            120             SETB    EA           ;EA(IE)开中断
00C6 22              121             RET
                     122     
                     123     ;************************
                     124     ;外部中断1子程序,读AD转换结果
A51 MACRO ASSEMBLER  TCMAIN                                                               01/04/2006 09:01:46 PAGE     3

                     125     ;************************
00C7 C0E0            126     IINT1:  PUSH    ACC
00C9 C083            127             PUSH    DPH
00CB C082            128             PUSH    DPL     
00CD C0D0            129             PUSH    0D0H
                     130             
00CF 90FEFF          131             MOV     DPTR,#0FEFFH  ;P2.0接AD片选IN7为选择通道
00D2 E0              132             MOVX    A,@DPTR
                     133          
00D3 F538            134             MOV     38H,A         ;38H中为AD转换值
00D5 D27F            135             SETB    7FH           ;置7FH标志位说明采样结束
                     136     
00D7 D0D0            137             POP     0D0H
00D9 D082            138             POP     DPL
00DB D083            139             POP     DPH
00DD D0E0            140             POP     ACC
00DF 32              141             RETI                  ;返回
                     142     
                     143     ;************************
                     144     ;定时器T0中断
                     145     ;************************
                     146     
00E0                 147     TT0:                         ;定时器T0,启动AD转换      
00E0 C083            148             PUSH   DPH
00E2 C082            149             PUSH   DPL
00E4 C0E0            150             PUSH   ACC
00E6 C0D0            151             PUSH   0D0H
                     152     
00E8 758CD8          153             MOV    TH0,#0D8H
00EB 758AEF          154             MOV    TL0,#0EFH     ;T0 10MS(12M)
                     155     
00EE D2A9            156             SETB    ET0          ;允许T0中断
00F0 E539            157             MOV     A,39H        ;39H中为采样系数(恒定值)
00F2 B5510A          158             CJNE    A,51H,INCTK  ;51H中为TC. 39H不等于51H时跳转
                     159                                  ;判断采样周期到否,没有到跳转
00F5                 160     AD:     
00F5 90FEFF          161             MOV     DPTR,#0FEFFH ;
00F8 F0              162             MOVX    @DPTR,A      ;启动AD转换
00F9 755100          163             MOV     51H,#00H     ;清TC
00FC 020104          164             LJMP    BACK
                     165     
00FF 0551            166     INCTK:  INC     51H          ;51H初值为00H TC=TC+1  
0101 12010D          167             LCALL   KJ
0104                 168     BACK:   
0104 D0D0            169             POP 0D0H
0106 D0E0            170             POP ACC
0108 D082            171             POP DPL
010A D083            172             POP DPH
010C 32              173             RETI
                     174     
010D                 175     KJ:                              ;这段程序的作用,产生PWM脉冲
010D C0E0            176             PUSH    ACC
010F E55E            177             MOV     A,5EH            ;5EH标志位,将CK送入PWM的标
0111 B4011A          178             CJNE    A,#01H,TEST2    
0114 E56A            179             MOV     A,6AH            ;a变量6AH中
0116 700D            180             JNZ     ANOT0            ;A不等于0跳
0118 7402            181             MOV     A,#02H       
011A F55E            182             MOV     5EH,A            ;5EH标志位送入02H
011C E55C            183             MOV     A,5CH            ;5CH为B原值
011E C3              184             CLR     C
011F 13              185             RRC     A
0120 F559            186             MOV     59H,A            ;59H为B变量
0122 02012E          187             LJMP    TEST2
                     188     
0125 C3              189     ANOT0:  CLR     C
0126 E56A            190             MOV     A,6AH            ;6AH为a变量
A51 MACRO ASSEMBLER  TCMAIN                                                               01/04/2006 09:01:46 PAGE     4

0128 9401            191             SUBB    A,#01H
012A F56A            192             MOV     6AH,A
012C C297            193             CLR     P1.7             ;脉冲清零加热
                     194      
012E E55E            195     TEST2:  MOV     A,5EH            ;5EH标志位,将CK送入PWM的标志
0130 B4021A          196             CJNE    A,#02H,OUT       ;不相等时跳转
0133 E559            197             MOV     A,59H            ;59H中为B变量
0135 700D            198             JNZ     BNOT0            ;A不等于0跳转
0137 7401            199             MOV     A,#01H
0139 F55E            200             MOV     5EH,A            ;5EH标志位置1
013B E568            201             MOV     A,68H            ;68H中为a原值
013D C3              202             CLR     C
013E 13              203             RRC     A
013F F56A            204             MOV     6AH,A            ;6AH中为a变量
0141 02014D          205             LJMP    OUT
0144 C3              206     BNOT0:  CLR     C
0145 E559            207             MOV     A,59H
0147 9401            208             SUBB    A,#01H
0149 F559            209             MOV     59H,A
014B D297            210             SETB    P1.7             ;停止加热
014D D0E0            211     OUT:    POP     ACC
014F 22              212             RET
                     213     
                     214     ;*********************
                     215     ;定时器T1中断发送显示
                     216     ;*********************
0150                 217     TT1:
0150 758DD8          218             MOV    TH1,#0D8H    ;改变定时中断的时间可以改正LED显示时一个灯特别亮

⌨️ 快捷键说明

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