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

📄 lcd1602_temp_v1.1.lst

📁 得用18B20传感器
💻 LST
📖 第 1 页 / 共 4 页
字号:
A51 MACRO ASSEMBLER  LCD1602_TEMP_V1_1                                                    09/17/2007 14:00:32 PAGE     1


MACRO ASSEMBLER A51 V8.00
OBJECT MODULE PLACED IN LCD1602_TEMP_v1.1.OBJ
ASSEMBLER INVOKED BY: C:\Keil\C51\BIN\A51.EXE LCD1602_TEMP_v1.1.ASM SET(SMALL) DEBUG EP

LOC  OBJ            LINE     SOURCE

0000                   1     ORG 00H
0000 802E              2     JMP INPORT
000B                   3     ORG 0BH
                       4     ;JMP TM0
0030                   5     ORG 30H
0030                   6     INPORT:
  0029                 7     TMP_H EQU 29H ;温度高字节
  0028                 8     TMP_L EQU 28H
  00B0                 9     RS EQU P3.0;确定具体硬件的连接方式 
  00B1                10     RW EQU P3.1 ;确定具体硬件的连接方式
  00B2                11     E  EQU P3.2 ;确定具体硬件的连接方式
  0091                12     KEY_SET EQU P1.1
  0090                13     KEY_UP  EQU P1.0
  0092                14     KEY_DOWN EQU P1.2
  0070                15     DS18B20_FLAG EQU 70h
  0001                16     SET_FLAG EQU 01H
  0002                17     FLASH_FLAG EQU 02H
  0003                18     K_ON EQU 03H
0030 7525FF           19     MOV 25H,#0FFH ;位00h-07h全部置1
0033 7C0E             20     MOV R4,#14
0035 758901           21     MOV TMOD,#01H
0038 758AB0           22     MOV TL0,#0B0H
003B 758C3C           23     MOV TH0,#3CH
003E 75A882           24     MOV IE,#10000010B ;(8:总控,2:定时0溢出中断控制位)
                      25     
                      26     
0041                  27     LCD_INIT:
                      28     ;15MS
0041 7E1E             29     MOV R6,#30
0043 912D             30     CALL DELAY_BY_R6 ;15ms
0045 758038           31     MOV P0,#38H ;写38h
0048 5160             32     ACALL WRITE_NOT_CHECK_BUSY 
004A 7E0A             33     MOV R6,#10
004C 912D             34     CALL DELAY_BY_R6 ;5ms                                                                      
                                                                                                                        
                                                                                                       
004E 758038           35     MOV P0,#38H
0051 5160             36     ACALL WRITE_NOT_CHECK_BUSY
0053 7E0A             37     MOV R6,#10
0055 912D             38     CALL DELAY_BY_R6 ;5ms
                      39     ;-----设转初始值
0057 D2B2             40     SETB E
0059 758001           41     MOV P0,#00000001B ;清屏并光标复位
005C 516B             42     ACALL ENABLE;调用写入命令子程序 
005E 758038           43     MOV P0,#00111000B ;8位2行5x7点阵 
0061 516B             44     ACALL ENABLE ;调用写入命令子程序 
0063 75800E           45     MOV P0,#00001110B ;显示器开、光标开、光标允许闪烁
0066 516B             46     ACALL ENABLE ;调用写入命令子程序
0068 758006           47     MOV P0,#00000110B;文字不动,光标自动右移 
006B 516B             48     ACALL ENABLE ;调用写入命令子程序
                      49     
                      50     
006D                  51     STORE_DEFINE_DATA: ;把自定义字符存入CGRAM
006D 758040           52     MOV P0,#40H ;CGRAM起始地址
0070 516B             53     ACALL ENABLE
0072 7A08             54     MOV R2,#8
0074 90045B           55     MOV DPTR,#DEFINE_DATA
0077 7B00             56     MOV R3,#0
A51 MACRO ASSEMBLER  LCD1602_TEMP_V1_1                                                    09/17/2007 14:00:32 PAGE     2

0079                  57     NEXTP:
0079 EB               58     MOV A,R3
007A 93               59     MOVC A,@A+DPTR
007B F580             60     MOV P0,A
007D 518E             61     CALL WRITE_DATA_TO_LCD
007F 0B               62     INC R3
0080 DAF7             63     DJNZ R2,NEXTP
                      64     
                      65     ;****************主程序*******************
0082                  66     START:
0082 31FA             67     CALL RESET
0084 30700E           68     JNB  70h,MAIN1
0087 7580C0           69     MOV P0,#0C0H ;写入显示起始地址(第二行第一个位置)
008A 516B             70     ACALL ENABLE ;调用写入命令子程序
                      71     
008C                  72     DS18B20_NOT_READY: 
008C 71AB             73     CALL DISPLAY_18B20_ERROR
                      74     
008E                  75     LOOP1: 
008E 31FA             76     CALL RESET
0090 307002           77     JNB 70h,MAIN1
0093 80F9             78     JMP LOOP1 ;如果栓测不到18b20程序下面不执行
                      79     
0095                  80     MAIN1: 
0095 758001           81     MOV P0,#00000001B ;清屏并光标复位
0098 516B             82     ACALL ENABLE;调用写入命令子程序 
009A 71BA             83     CALL DISPLAY_WATING ;等待第一次结果.
009C 31E6             84     CALL SKIP_ROM 
009E 31F0             85     CALL TEMP_CONV
00A0 913F             86     CALL DELAY_600MS 
00A2 758001           87     MOV P0,#00000001B ;清屏并光标复位
00A5 516B             88     ACALL ENABLE;调用写入命令子程序
                      89     
                      90     
                      91     
                      92        
00A7                  93     MAIN :
00A7 31FA             94     CALL RESET
00A9 31E6             95     CALL SKIP_ROM 
00AB 31EB             96     CALL RECALL_EPROM ;调入温度限值.
00AD                  97     MAIN_MAIN:
00AD 31D2             98     CALL READ_TEMP ;读18b20的内部温度
00AF 2070DA           99     JB 70h,DS18B20_NOT_READY ;中途失败!
00B2 519D            100     CALL DATA_CONV ; 数据转换
00B4 7104            101     CALL DISPLAY_18B20_TEMP
00B6 7149            102     CALL DISPLAY_18B20_TEMP_XZ;显示限值.
00B8 11BF            103     CALL CONTROL
00BA 30910E          104     JNB KEY_SET,S1
00BD 80EE            105     JMP MAIN_MAIN
                     106     
                     107     
00BF                 108     CONTROL:
00BF 300305          109     JNB 03H,CONTROL1
00C2 120419          110     LCALL DISPLAY_OFF
00C5 01CA            111     AJMP CONTROL_END
00C7                 112     CONTROL1:
00C7 12040A          113     LCALL DISPLAY_ON
00CA                 114     CONTROL_END:
00CA 22              115     RET 
                     116     
00CB                 117     S1:
00CB 120434          118     LCALL DELAY_2MS ;延时消抖
00CE 2091D6          119     JB KEY_SET,MAIN
00D1 3091FD          120     JNB KEY_SET,$
00D4 1200D9          121     LCALL KEY ;有键输入
00D7 01A7            122     AJMP MAIN
A51 MACRO ASSEMBLER  LCD1602_TEMP_V1_1                                                    09/17/2007 14:00:32 PAGE     3

                     123     
                     124     
                     125     ;***************键处理程序******************
00D9 D201            126     KEY: SETB 01H
00DB                 127     KEY_IN:;有键输入的程序
00DB 758001          128     MOV P0,#00000001B ;清屏并光标复位
00DE 516B            129     ACALL ENABLE;调用写入命令子程序
00E0 300122          130     JNB 01H,DSP_SET_L ;01如果是0,则显示L:
00E3                 131     DSP_SET_H: ;显示高温的限值
00E3 758080          132     MOV P0,#10000000B
00E6 71E2            133     ACALL DISPLAY_SETING_TEMP_H ;显示SETING_TEMP:H ..
00E8 900463          134     MOV DPTR,#LED_DATA
00EB A942            135     MOV R1,42H ;码表初值
00ED 7801            136     MOV R0,#1;字数
00EF 5156            137     CALL DISPLAY
                     138     ;---------------显示温度限值低位
00F1 900463          139     MOV DPTR,#LED_DATA
00F4 A941            140     MOV R1,41H ;码表初值
00F6 7801            141     MOV R0,#1;字数
00F8 5156            142     CALL DISPLAY
                     143     ;---------------显示温度限值低位
00FA 900463          144     MOV DPTR,#LED_DATA
00FD A940            145     MOV R1,40H ;码表初值
00FF 7801            146     MOV R0,#1;字数
0101 5156            147     CALL DISPLAY
0103 2127            148     AJMP KEY_SELECT
                     149     
0105                 150     DSP_SET_L:;显示低温的限值
0105 758080          151     MOV P0,#10000000B
0108 71F6            152     ACALL DISPLAY_SETING_TEMP_L ;显示SETING_TEMP:L ..
010A 900463          153     MOV DPTR,#LED_DATA
010D A945            154     MOV R1,45H ;码表初值
010F 7801            155     MOV R0,#1;字数
0111 5156            156     CALL DISPLAY
                     157     ;---------------显示温度限值低位
0113 900463          158     MOV DPTR,#LED_DATA
0116 A944            159     MOV R1,44H ;码表初值
0118 7801            160     MOV R0,#1;字数
011A 5156            161     CALL DISPLAY
                     162     ;---------------显示温度限值低位
011C 900463          163     MOV DPTR,#LED_DATA
011F A943            164     MOV R1,43H ;码表初值
0121 7801            165     MOV R0,#1;字数
0123 5156            166     CALL DISPLAY
0125 2127            167     AJMP KEY_SELECT 
                     168     
                     169     
0127                 170     KEY_SELECT:
0127 309108          171     JNB KEY_SET,K_SET
012A 309020          172     JNB KEY_UP,K_UP
012D 30923D          173     JNB KEY_DOWN,K_DOWN
0130 2127            174     AJMP KEY_SELECT 
                     175     
                     176     
0132                 177     K_SET:
0132 120434          178     LCALL DELAY_2MS
0135 120434          179     lcall delay_2ms
0138 120434          180     lcall delay_2ms
013B 2091E9          181     JB KEY_SET,KEY_SELECT 
                     182     
                     183     
013E 7DFA            184     MOV R5,#250
0140                 185     KSET_LOOP:
0140 20916B          186     JB KEY_SET,KEY_CPL
0143 120434          187     LCALL DELAY_2MS
0146 120434          188     LCALL DELAY_2MS
A51 MACRO ASSEMBLER  LCD1602_TEMP_V1_1                                                    09/17/2007 14:00:32 PAGE     4

0149 DDF5            189     DJNZ R5,KSET_LOOP
014B 21B2            190     AJMP EXT_KEY
                     191     
                     192     
014D                 193     K_UP:
014D 120434          194     LCALL DELAY_2MS
0150 120434          195     lcall delay_2ms
0153 2090D1          196     JB KEY_UP,KEY_SELECT
0156 30010A          197     JNB  01H,K_UP_LOW
                     198     
0159                 199     K_UP_HIGH:
0159 3090FD          200     JNB KEY_UP,$
015C E52A            201     MOV A,2AH
015E 04              202     INC A 
015F F52A            203     MOV 2AH,A
0161 8025            204     JMP K_UP_DOWN_END
                     205     
0163                 206     K_UP_LOW:
0163 3090FD          207     JNB KEY_UP,$
0166 E52B            208     MOV A,2BH
0168 04              209     INC A 
0169 F52B            210     MOV 2BH,A
016B 801B            211     JMP K_UP_DOWN_END
                     212     
                     213     ;*********************
                     214     
016D                 215     K_DOWN:
016D 120434          216     LCALL DELAY_2MS
0170 2092B4          217     JB KEY_DOWN,KEY_SELECT
0173 30010A          218     JNB  01H,K_DOWN_LOW
                     219     
0176                 220     K_DOWN_HIGH:
0176 3092FD          221     JNB KEY_DOWN,$
0179 E52A            222     MOV A,2AH
017B 14              223     DEC A 
017C F52A            224     MOV 2AH,A
017E 8008            225     JMP K_UP_DOWN_END
                     226     
0180                 227     K_DOWN_LOW:
0180 3092FD          228     JNB KEY_DOWN,$
0183 E52B            229     MOV A,2BH
0185 14              230     DEC A 
0186 F52B            231     MOV 2BH,A
                     232     
0188                 233     K_UP_DOWN_END:
                     234     
0188 E52A            235     MOV A,2AH
018A 75F00A          236     MOV B,#10
018D 84              237     DIV AB
018E 85F040          238     MOV 40H,B ;高温限值个位 
0191 75F00A          239     MOV B,#10
0194 84              240     DIV AB
0195 85F041          241     MOV 41H,B;十位
0198 F542            242     MOV 42H,A;百位

⌨️ 快捷键说明

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