毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

用单片机实现温度远程显示 第9页

更新时间:2008-4-24:  来源:毕业论文

用单片机实现温度远程显示 第9页

mov p0,#0feh

     ajmp d_10

DISP2:   CJNE R0,#2,DISP3   ;显示十位

     setb p0.0

     mov c,disp_c_2

     mov A,disp_2

     mov p1,#0FFH

     mov p0,#0fdh

     ajmp d_10

DISP3:   CJNE R0,#3,DISP4   ;显示百位

     mov c,disp_c_3

     mov A,disp_3

     mov p1,#0FFH

     mov p0,#0fbh

     ajmp d_10

DISP4:   CJNE R0,#4,DISP5   ;显示千位

     mov c,disp_c_4

     mov A,disp_4

     mov p1,#0FFH

     mov p0,#0f7h

     ajmp d_10

DISP5:   CJNE R0,#5,DISP6   ;显示通道号

     mov A,disp_5

     mov p1,#0FFH

     mov p0,#0efh

     ajmp d_10

DISP6:  CJNE R0,#6,DISP7    ;显示仪表地址

     mov A,disp_6

     mov p1,#0FFH

     mov p0,#0dfh

     ajmp d_10

DISP7:   CJNE R0,#7,DISP8   ;

     mov A,disp_7

     mov p1,#0FFH

     mov p0,#0bfh

     ajmp d_10

DISP8:   CJNE R0,#8,d_10        ;

     mov A,disp_8

     mov p1,#0FFH

     mov p0,#7fh

d_10:    acall disp_w

     mov r0,disp_c

     cjne r0,#10,d_12       ;disp_c=10则清disp_c

     mov disp_c,#0

     inc time_s_c       ;MS,S计数处理程序

     mov a,time_s_c

     cjne a,#2,d_12

     mov time_s_c,#0

     inc time_20ms

     inc wdt            ;软看门狗处理程序

     mov a,wdt

     cjne a,#wdt_time,d_12

     mov wdt,#0

     mov a,#0

     push acc

     push acc

     reti

;-----------------------

d_12:    pop psw

     pop dpl

     pop dph

     pop ar0

     pop acc

     RETI

disp_w:  jnc d_0

     jnb disp_s_c,d_0

     mov p1,#0FFH

     ajmp d_1

d_0: movc a,@a+dptr

     cpl a

     mov p1,a

D_1: ret

;---------------------------------------------------------

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

     ;  0   1    2   3   4   5   6   7   8   9

     db 77H,7CH,39H,5EH,79H,71H

     ;   A   B   C   D   E   F

 

     DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH

     ;   0.   1.  2.   3.   4.   5.   6.   7.   8.  9.

     db 40H,80H,00H,37h,5ch,1ch,58h,74h,0dch,46h

     ;   -   .          n   o  u   c    h   a   -1

     ;   1a  1b  1c     1d  1e 1f  20  21  22  23

        END

4、命令发送及接收控制子模块(rand_send.a51

;----------4--------rand_send.a51----------------

name send_order

extrn idata (rec_buf)  ;rec_buff 接收缓冲区

extrn data (time_20ms)

extrn bit (ri_f)        ;ri_f         正在接收标志

PUBLIC send_order

prog SEGMENT CODE                ;定义代码段

byte_buff segment data           ;定义字节数据段1

byte_buffI segment idata         ;定义字节数据段2

bit_buff segment data bitaddressable ;定义位数据段

     rseg byte_buff

     send_n:ds 1

     order_buf:ds 10

     rseg prog

     dd_c equ 4         ;等待回应20m

     cw_n equ 7         ;设置允许错误次数

     using 0

;---------------------清命令缓冲区

send_order:

     mov dpl,#8

     mov r0,#order_buf

send_0:  mov @r0,#0

     inc r0

     djnz dpl,send_0

     MOV DPL,#72        ;清接收缓冲区

     MOV R0,#REC_BUF

SEND_A:  MOV @R0,#0

     INC R0

     DJNZ DPL,SEND_A       

;----------------------发送命令控制程序  

     mov send_n,#cw_n   ;设置允许错误次数

     mov b,#10

     clr c

     subb a,b

     mov b,#8                        

     mul ab            

     mov dptr,#a_order

     mov r0,#order_buf-1

     mov r1,#10

start_mov:inc r0

     push acc

     movc a,@a+dptr

     mov @r0,a

     inc dptr

     pop acc

     cjne @r0,#0dh,start_mov

;----------------------发送命令子程序

send_start:setb p3.2        ;切换75176至发送状态

     mov r0,#order_buf-1

send_10:inc r0    

     mov sbuf,@r0

     jnb ti,$      ;等待一帧数据发完

     CLR TI

         cjne @r0,#0dh,send_10  ;检测到结束标志退出

;------------------------检测接收标志

     mov r0,#30         ;延时60uS等待停止位发送完毕

     djnz r0,$    

     setb es

     clr p3.2      ;切换75176至接收状态

     mov a,#dd_c        ;延时检测仪表有无回应

     add a,time_20ms   

send_21:jb ri_f,send_20

     cjne a,time_20ms,send_21

     mov a,#'N'

     ajmp send_23

;-------------------------检测接收是否正确

send_20:mov a,#10      ;延时200MS等待接收结束

     add a,time_20ms

send_28:jnb ri_f,send_29

     cjne a,time_20ms,send_28

     clr ri_f           ;200MS仍未结束清接收中标志

send_29:mov r0,#rec_buf+4

     cjne @r0,#'*',send_22

     mov a,#'*'

send_23:djnz send_n,send_start   ;达到允许错误次数退出

     ajmp send_out

send_22:mov r0,#rec_buf+71

     cjne @r0,#0dh,send_23  ;接收缓冲区第72字节不为回车符转出错处理

;------------------------------还原校验码

     mov r0,#rec_buf+70

     mov a,@r0

     clr c

     subb a,#3ah

     jnc SEND_25

     add a,#7

send_25:add a,#3

     mov @r0,a

     dec r0

     mov a,@r0

     clr c

     subb a,#3ah

     jnc SEND_26

     add a,#7

send_26:ADD A,#3

     swap a

     inc r0

     xchd a,@r0

     dec r0

     xch a,@r0

     inc r0

     mov @r0,#0dh       ;检验码后加回车符

;------------------------------检验接收缓冲区数据 

     mov r0,#rec_buf+1

     mov a,@r0

     inc r0

send_24:xrl a,@r0

     inc r0

     cjne @r0,#0dh,send_24

     cjne a,#0,send_200 ;接收校验未通过转出错处理

send_out:clr es

     ret

send_200:mov a,#1

     ajmp send_23 

;----------------------------------------------------

a_order: db '@0ARD67',0DH   ;A表全部动态数据命令

b_order: db '@0BRD64',0DH   ;B表全部动态数据命令

c_order: db '@0CRD65',0DH   ;c表全部动态数据命令

d_order: db '@0DRD62',0DH   ;d表全部动态数据命令

e_order: db '@0ERD63',0DH   ;e表全部动态数据命令

f_order: db '@0FRD60',0DH   ;f表全部动态数据命令

    END

5、串行接收子模块(rand_rec.a51

;-------5----------rand_rec.a51

name rec_si

extrn bit (ri_f)

public rec_si,rec_buf

prog SEGMENT CODE           ;定义代码段

byte_buff segment data           ;定义字节数据段1

byte_buffI segment idata         ;定义字节数据段2

bit_buff segment data bitaddressable ;定义位数据段

     rseg byte_buff

     rec_buf_z: ds 1    ;接收区指针

     rec_err: ds 1      ;接收缓冲区溢出计数器

     rseg byte_buffi

     rec_buf: ds 75

     rseg prog

     using 0

rec_si:  PUSH PSW

     push ar0

     push acc

     JNB RI,REC_OUT         ;为发送中断跳出

上一页  [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] 下一页

用单片机实现温度远程显示 第9页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。