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

📄 tcmain.ls1

📁 PC与单片机双向通讯智能温控程序 #include <AT89X51.H> #include <intrins.h> #define Key_UP P1_0 #def
💻 LS1
📖 第 1 页 / 共 2 页
字号:
000B BF              229             DB      0BFH
                     230     
                     231     
----                 232             RSEG  ?C_INITSEG
0000 05              233             DB      005H
0001 00       F      234             DB      inbuf1
0002 30              235             DB      030H
0003 30              236             DB      030H
0004 30              237             DB      030H
0005 30              238             DB      030H
0006 30              239             DB      030H
                     240     
0007 0C              241             DB      00CH
0008 00       F      242             DB      dis_8
0009 30              243             DB      030H
000A 31              244             DB      031H
000B 32              245             DB      032H
000C 33              246             DB      033H
000D 34              247             DB      034H
000E 35              248             DB      035H
000F 36              249             DB      036H
0010 37              250             DB      037H
0011 38              251             DB      038H
0012 39              252             DB      039H
0013 20              253             DB      020H
0014 2D              254             DB      02DH
                     255     
A51 MACRO ASSEMBLER  TCMAIN                                                               09/30/2007 01:01:42 PAGE     5

                     256     ; #include <AT89X51.H>
                     257     ; #include <intrins.h>
                     258     ; #define Key_UP            P1_0 
                     259     ; #define Key_DOWN          P1_1   
                     260     ; #define Key_SET           P1_2   
                     261     ; #define RelayOutPort      P2_0  
                     262     ; #define LEDPort           P0      
                     263     ; #define DELPort           P2_1   
                     264     ; #define LEDTwoC           P3_6    
                     265     ; #define LEDThreeC         P3_7    
                     266     ; #define TMPort                          P2_7
                     267     ; #define INBUF_LEN 5 //数据长度
                     268     ; unsigned char inbuf1[INBUF_LEN]={'0','0','0','0','0'};//发送缓冲区
                     269     ; unsigned char inbuf2[50];//接收缓冲区
                     270     ; unsigned char count3;
                     271     ; void init_serialcomm( void )
                     272     
----                 273             RSEG  ?PR?init_serialcomm?TCMAIN
0000                 274     init_serialcomm:
                     275                             ; SOURCE LINE # 16
                     276     ; {
                     277                             ; SOURCE LINE # 17
                     278     ; SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
                     279                             ; SOURCE LINE # 18
0000 759850          280             MOV     SCON,#050H
                     281     ; TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
                     282                             ; SOURCE LINE # 19
0003 438920          283             ORL     TMOD,#020H
                     284     ; PCON |= 0x80 ; //SMOD=1;
                     285                             ; SOURCE LINE # 20
0006 438780          286             ORL     PCON,#080H
                     287     ; TH1 = 0xFA ; //Baud:4800 fosc=11.0592MHz
                     288                             ; SOURCE LINE # 21
0009 758DFA          289             MOV     TH1,#0FAH
                     290     ; IE |= 0x90 ; //Enable Serial Interrupt
                     291                             ; SOURCE LINE # 22
000C 43A890          292             ORL     IE,#090H
                     293     ; TR1 = 1 ; // timer 1 run
                     294                             ; SOURCE LINE # 23
000F D28E            295             SETB    TR1
                     296     ; }
                     297                             ; SOURCE LINE # 24
0011 22              298             RET     
                     299     ; END OF init_serialcomm
                     300     
                     301     ; //向串口发送一个字符
                     302     ; void send_char_com( unsigned char ch)
                     303     
----                 304             RSEG  ?PR?_send_char_com?TCMAIN
0000                 305     L?0099:
                     306             USING   2
0000 7F4F            307             MOV     R7,#04FH
0002                 308     L?0100:
0002 1100     F      309             ACALL   _send_char_com
0004 1100     F      310             ACALL   _send_char_com
0006                 311     _send_char_com:
                     312                             ; SOURCE LINE # 26
                     313     ;---- Variable 'ch?140' assigned to Register 'R7' ----
                     314     ; {
                     315                             ; SOURCE LINE # 27
                     316     ; SBUF=ch;
                     317                             ; SOURCE LINE # 28
0006 8F99            318             MOV     SBUF,R7
0008                 319     ?C0002:
                     320     ; while (TI== 0 );
                     321                             ; SOURCE LINE # 29
A51 MACRO ASSEMBLER  TCMAIN                                                               09/30/2007 01:01:42 PAGE     6

0008 3099FD          322             JNB     TI,?C0002
000B                 323     ?C0003:
                     324     ; TI= 0 ;
                     325                             ; SOURCE LINE # 30
000B C299            326             CLR     TI
                     327     ; }
                     328                             ; SOURCE LINE # 31
000D 22              329             RET     
                     330     ; END OF _send_char_com
                     331     
                     332     ; //向串口发送一个字符串,strlen 为该字符串长度
                     333     ; void send_string_com( unsigned char *str, unsigned int strlen)
                     334     
----                 335             RSEG  ?PR?_send_string_com?TCMAIN
0000                 336     _send_string_com:
                     337             USING   0
                     338                             ; SOURCE LINE # 33
0000 8B00     F      339             MOV     str?241,R3
0002 8A00     F      340             MOV     str?241+01H,R2
0004 8900     F      341             MOV     str?241+02H,R1
0006 8C00     F      342             MOV     strlen?242,R4
0008 8D00     F      343             MOV     strlen?242+01H,R5
                     344     ; {
                     345                             ; SOURCE LINE # 34
                     346     ; unsigned int k= 0 ;
                     347                             ; SOURCE LINE # 35
                     348     ;---- Variable 'k?243' assigned to Register 'R4/R5' ----
000A E4              349             CLR     A
000B FD              350             MOV     R5,A
000C FC              351             MOV     R4,A
000D                 352     ?C0007:
                     353     ; do
                     354     ; {
                     355                             ; SOURCE LINE # 37
                     356     ; send_char_com(*(str + k));
                     357                             ; SOURCE LINE # 38
000D AB00     F      358             MOV     R3,str?241
000F AA00     F      359             MOV     R2,str?241+01H
0011 A900     F      360             MOV     R1,str?241+02H
0013 8D82            361             MOV     DPL,R5
0015 8C83            362             MOV     DPH,R4
0017 1100     F      363             ACALL   ?C?CLDOPTR
0019 FF              364             MOV     R7,A
001A 1100     F      365             ACALL   _send_char_com
                     366     ; k++;
                     367                             ; SOURCE LINE # 39
001C 0D              368             INC     R5
001D BD0001          369             CJNE    R5,#00H,?C0089
0020 0C              370             INC     R4
0021                 371     ?C0089:
                     372     ; } while (k < strlen);
                     373                             ; SOURCE LINE # 40
0021 C3              374             CLR     C
0022 ED              375             MOV     A,R5
0023 9500     F      376             SUBB    A,strlen?242+01H
0025 EC              377             MOV     A,R4
0026 9500     F      378             SUBB    A,strlen?242
0028 40E3            379             JC      ?C0007
                     380     ; }
                     381                             ; SOURCE LINE # 41
002A 22              382             RET     
                     383     ; END OF _send_string_com
                     384     
----                 385     CSEG    AT      00023H
0023 0100     F      386             AJMP    serial
                     387     
A51 MACRO ASSEMBLER  TCMAIN                                                               09/30/2007 01:01:42 PAGE     7

                     388     ; //串口接收中断函数
                     389     ; void serial () interrupt 4 using 3
                     390     
----                 391             RSEG  ?PR?serial?TCMAIN
                     392             USING   3
0000                 393     serial:
0000 C0E0            394             PUSH    ACC
0002 C0D0            395             PUSH    PSW
                     396             USING   3
0004 75D018          397             MOV     PSW,#018H
                     398                             ; SOURCE LINE # 43
                     399     ; {
                     400     ; if (RI) //RI==开始接收
                     401                             ; SOURCE LINE # 45
0007 30981A          402             JNB     RI,?C0012
                     403     ; {
                     404                             ; SOURCE LINE # 46
                     405     ; unsigned char ch;
                     406     ; RI = 0 ; //软件RI=0
                     407                             ; SOURCE LINE # 48
000A C298            408             CLR     RI
                     409     ; ch=SBUF;
                     410                             ; SOURCE LINE # 49
000C 859900   F      411             MOV     ch?344,SBUF
                     412     ; if (ch> 1 )
                     413                             ; SOURCE LINE # 50
000F E500     F      414             MOV     A,ch?344
0011 D3              415             SETB    C
0012 9401            416             SUBB    A,#01H
0014 4005            417             JC      ?C0010
                     418     ; {
                     419                             ; SOURCE LINE # 51
                     420     ; count3= 0 ;
                     421                             ; SOURCE LINE # 52
0016 750000   F      422             MOV     count3,#00H
                     423     ; inbuf2[count3]=ch;
                     424                             ; SOURCE LINE # 53
                     425     ; }
                     426                             ; SOURCE LINE # 54
0019 8002            427             SJMP    ?C0092
001B                 428     ?C0010:
                     429     ; else
                     430     ; {
                     431                             ; SOURCE LINE # 56
                     432     ; count3++;
                     433                             ; SOURCE LINE # 57
001B 0500     F      434             INC     count3
                     435     ; inbuf2[count3]=ch;
                     436                             ; SOURCE LINE # 58
001D                 437     ?C0092:
001D 7400     F      438             MOV     A,#LOW (inbuf2)
001F 2500     F      439             ADD     A,count3
0021 F8              440             MOV     R0,A
0022 A600     F      441             MOV     @R0,ch?344
                     442     ; }
                     443                             ; SOURCE LINE # 59
                     444     ; }
                     445                             ; SOURCE LINE # 60
                     446     ; }     
                     447                             ; SOURCE LINE # 61
0024                 448     ?C0012:
0024 D0D0            449             POP     PSW
0026 D0E0            450             POP     ACC
0028 32              451             RETI    
                     452     ; END OF serial
                     453     
A51 MACRO ASSEMBLER  TCMAIN                                                               09/30/2007 01:01:42 PAGE     8

                     454     ; 
                     455     ; unsigned char code LEDDis[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF}
                             ; //0-9的LED笔划,0xFF为空,0xF7为负号
                     456     ; unsigned char dis_8[12]={'0','1','2','3','4','5','6','7','8','9',' ','-'};
                     457     ; static unsigned char bdata StateREG;  //可位寻址的状态寄存器
                     458     ; sbit DS1820ON = StateREG^0;             //DS1820是否存在
                     459     ; sbit SetTF = StateREG^1;              //是否是在温度设置状态
                     460     ; sbit KeySETDown = StateREG^2;         //是否已按过SET键标识
                     461     ; sbit PowTF = StateREG^3;              //电源电源标识
                     462     ; sbit KeyTF = StateREG^4;                                                      //键盘是否

⌨️ 快捷键说明

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