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

📄 tempc.ls1

📁 温度传感器程序
💻 LS1
📖 第 1 页 / 共 3 页
字号:

                             ED笔划,0xFF为空,0xF7为负号
                     190     ; 
                     191     ; static unsigned char bdata StateREG;  //可位寻址的状态寄存器
                     192     ; sbit DS18B20ON = StateREG^0;            //DS1820是否存在
                     193     ; sbit SetTF = StateREG^1;              //是否是在温度设置状态
                     194     ; 
                     195     ; static signed char LED_f,LED_1,LED_2,LED_3,LED_4;  //LED的显示位 LED_One为十位,LED_Two为
                             个位
                     196     ; static signed char L_1,L_2,L_3,L_4,L_5;  //LED的显示位 LED_One为十位,LED_Two为个位
                     197     ; static unsigned char Sign; //负号标识
                     198     ; static unsigned char sign_jd; //精度标识
                     199     ; static unsigned char KeyV,TempKeyV;      //键值
                     200     ; 
                     201     ; static unsigned char bdata TLV _at_ 0x0029;         //温度变量高低位
                     202     ; static unsigned char bdata THV _at_ 0x0028;
                     203     ; static signed char TMV;       //转换后的温度值
                     204     ; static signed char TM;       //转换后的温度值
                     205     ; static signed int wd;       //转换后的温度值
                     206     ; static signed int zd;       //转换后的温度值
                     207     ; 
                     208     ; void Delay_10ms(void);
                     209     ; void InitDS1820(void);
                     210     ; void ROMDS1820(void);
                     211     ; void TMVDS1820(void);
                     212     ; void Delay_510(void);
                     213     ; void TMRDS1820(void);
                     214     ; void ReadDS1820(void);
                     215     ; void V2ToV(void);
                     216     ; void Delay_110(void);
                     217     ; 
                     218     ; 
                     219     ; 
                     220     ; void main(void)
                     221     
----                 222             RSEG  ?PR?main?TEMPC
0000                 223     main:
                     224             USING   0
                     225                             ; SOURCE LINE # 54
                     226     ; {
                     227                             ; SOURCE LINE # 55
                     228     ;     THV = 0;
                     229                             ; SOURCE LINE # 56
0000 E4              230             CLR     A
0001 F528            231             MOV     THV,A
                     232     ;       TLV = 0;
                     233                             ; SOURCE LINE # 57
0003 F529            234             MOV     TLV,A
                     235     ;       TMV = 0;
                     236                             ; SOURCE LINE # 58
0005 F500     F      237             MOV     TMV,A
                     238     ;       TM=0;
                     239                             ; SOURCE LINE # 59
0007 F500     F      240             MOV     TM,A
                     241     ;       KeyV = 0;
                     242                             ; SOURCE LINE # 60
0009 F500     F      243             MOV     KeyV,A
                     244     ;       TempKeyV = 0;
                     245                             ; SOURCE LINE # 61
000B F500     F      246             MOV     TempKeyV,A
                     247     ;     zd=50;
                     248                             ; SOURCE LINE # 62
000D F500     F      249             MOV     zd,A
000F 750032   F      250             MOV     zd+01H,#032H
                     251     ; 
                     252     ;       InitDS1820(); //初始化
                     253                             ; SOURCE LINE # 64
A51 MACRO ASSEMBLER  TEMPC                                                                04/13/2005 22:38:51 PAGE     5

0012 1100     F      254             ACALL   InitDS1820
                     255     ;       ROMDS1820();    //跳过ROM
                     256                             ; SOURCE LINE # 65
0014 1100     F      257             ACALL   ROMDS1820
                     258     ;       TMRDS1820();    //读出温度指令
                     259                             ; SOURCE LINE # 66
0016 1100     F      260             ACALL   TMRDS1820
                     261     ;       ReadDS1820(); //读出温度值和上限值
                     262                             ; SOURCE LINE # 67
0018 1100     F      263             ACALL   ReadDS1820
                     264     ; 
                     265     ;       EA = 1;                                 //允许CPU中断
                     266                             ; SOURCE LINE # 69
001A D2AF            267             SETB    EA
                     268     ;       ET0 = 1;                                //定时器0中断打开
                     269                             ; SOURCE LINE # 70
001C D2A9            270             SETB    ET0
                     271     ;       TMOD = 0x1;                     //设定时器0为模式1,16位模式
                     272                             ; SOURCE LINE # 71
001E 758901          273             MOV     TMOD,#01H
                     274     ;       TH0=0xB1;
                     275                             ; SOURCE LINE # 72
0021 758CB1          276             MOV     TH0,#0B1H
                     277     ;       TL0=0xDF;                               //设定时值为20000us(20ms)
                     278                             ; SOURCE LINE # 73
0024 758ADF          279             MOV     TL0,#0DFH
                     280     ;       TR0 = 1;                                //开始定时
                     281                             ; SOURCE LINE # 74
0027 D28C            282             SETB    TR0
0029                 283     ?C0001:
                     284     ;       while(1);
                     285                             ; SOURCE LINE # 75
0029 80FE            286             SJMP    ?C0001
                     287     ; END OF main
                     288     
----                 289     CSEG    AT      0000BH
000B 0100     F      290             AJMP    KeyAndDis_Time0
                     291     
                     292     ; }
                     293     ; 
                     294     ; //定时器0中断外理中键扫描和显示
                     295     ; void KeyAndDis_Time0(void) interrupt 1 using 2
                     296     
----                 297             RSEG  ?PR?KeyAndDis_Time0?TEMPC
                     298             USING   2
0000                 299     KeyAndDis_Time0:
0000 C0E0            300             PUSH    ACC
0002 C0F0            301             PUSH    B
0004 C083            302             PUSH    DPH
0006 C082            303             PUSH    DPL
0008 C0D0            304             PUSH    PSW
                     305             USING   2
000A 75D010          306             MOV     PSW,#010H
                     307                             ; SOURCE LINE # 79
                     308     ; {
                     309     ;   TH0=0xb1;
                     310                             ; SOURCE LINE # 81
000D 758CB1          311             MOV     TH0,#0B1H
                     312     ;   TL0=0xDF;                           //设定时值为20000us(20ms)
                     313                             ; SOURCE LINE # 82
0010 758ADF          314             MOV     TL0,#0DFH
                     315     ;   Key_jd=1;
                     316                             ; SOURCE LINE # 83
0013 D2B5            317             SETB    P3_5
                     318     ;   LEDPort = 0x00;
                     319                             ; SOURCE LINE # 84
A51 MACRO ASSEMBLER  TEMPC                                                                04/13/2005 22:38:51 PAGE     6

0015 759000          320             MOV     P1,#00H
                     321     ;   zd++;
                     322                             ; SOURCE LINE # 85
0018 0500     F      323             INC     zd+01H
001A E500     F      324             MOV     A,zd+01H
001C 7002            325             JNZ     ?C0041
001E 0500     F      326             INC     zd
0020                 327     ?C0041:
                     328     ;   if (zd>50)
                     329                             ; SOURCE LINE # 86
0020 D3              330             SETB    C
0021 9432            331             SUBB    A,#032H
0023 E500     F      332             MOV     A,zd
0025 6480            333             XRL     A,#080H
0027 9480            334             SUBB    A,#080H
0029 4029            335             JC      ?C0004
                     336     ;    {
                     337                             ; SOURCE LINE # 87
                     338     ;   if (!Key_jd)
                     339                             ; SOURCE LINE # 88
002B 20B503          340             JB      P3_5,?C0005
                     341     ;     KeyV = 1;
                     342                             ; SOURCE LINE # 89
002E 750001   F      343             MOV     KeyV,#01H
0031                 344     ?C0005:
                     345     ; 
                     346     ;   if (KeyV != 0)      //有键按下
                     347                             ; SOURCE LINE # 91
0031 E500     F      348             MOV     A,KeyV
0033 601F            349             JZ      ?C0004
                     350     ;     {
                     351                             ; SOURCE LINE # 92
                     352     ;       Delay_10ms();   //延时防抖  按下10ms再测
                     353                             ; SOURCE LINE # 93
0035 1100     F      354             ACALL   Delay_10ms
                     355     ;       if (!Key_jd)
                     356                             ; SOURCE LINE # 94
0037 20B503          357             JB      P3_5,?C0007
                     358     ;         TempKeyV = 1;
                     359                             ; SOURCE LINE # 95
003A 750001   F      360             MOV     TempKeyV,#01H
003D                 361     ?C0007:
                     362     ;       if (KeyV == TempKeyV)   //两次值相等为确定接下了键
                     363                             ; SOURCE LINE # 96
003D E500     F      364             MOV     A,KeyV
003F B50012   F      365             CJNE    A,TempKeyV,?C0004
                     366     ;         {
                     367                             ; SOURCE LINE # 97
                     368     ;           sign_jd=!sign_jd;
                     369                             ; SOURCE LINE # 98
0042 E500     F      370             MOV     A,sign_jd
0044 7004            371             JNZ     ?C0009
0046 7F01            372             MOV     R7,#01H
0048 8002            373             SJMP    ?C0010
004A                 374     ?C0009:
004A 7F00            375             MOV     R7,#00H
004C                 376     ?C0010:
004C 8F00     F      377             MOV     sign_jd,R7
                     378     ;                 zd=0;
                     379                             ; SOURCE LINE # 99
004E 750000   F      380             MOV     zd,#00H
0051 750000   F      381             MOV     zd+01H,#00H
                     382     ;         }
                     383                             ; SOURCE LINE # 100
                     384     ;     }
                     385                             ; SOURCE LINE # 101
A51 MACRO ASSEMBLER  TEMPC                                                                04/13/2005 22:38:51 PAGE     7

⌨️ 快捷键说明

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