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

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

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

 

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

十、附录(源程序)

1、主模块(rand_main.a51

;------------1--------rand_main.a51----------------

name rand_main

EXTRN CODE(I_T0,send_order,rec_si,ascii_bcd,key)

extrn data (DISP_buf,disp_wc,time_20ms,wdt)

extrn idata (rec_buf)

public TH0_H,TL0_L,START,ri_f,wdt_time,key_work,key_f

prog SEGMENT CODE           ;定义代码段

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

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

bit_buff segment data bitaddressable ;定义位数据段

bit_flag segment bit

stack segment idata         ;定义堆栈数据段

     rseg stack         ;为堆栈保留20个字节

     ds 20

     CSEG AT 00H        ;定义绝对代码段

     USING 0            ;选择工作寄存器组第0

     lJMP rand          ;复位时程序执行执行点

     CSEG AT 03H        ;外部中断0

     RETI

     CSEG AT 0BH        ;定时器0中断

     lJMP I_T0

     CSEG AT 13H        ;外部中断1

     ljmp key

     RETI

     CSEG AT 1BH        ;定时器1中断

     RETI

     CSEG AT 23H        ;串行中断

     ljmp rec_si

     RSEG BYTE_BUFF

     td_temp: ds 1

     TD_n: DS 1         ;通道号

     YD_n100: ds 1      ;仪表地址

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

     rseg bit_flag

     key_work:dbit 1

     ri_f: dbit 1       ;串行口正在接收标志

;----主程序

     RSEG prog

;------------------------------符号定义

     key_f equ p3.3

     key_up equ p3.4

     key_down equ p3.5

     wdt_time equ 100       ;软件看门狗定时器计数值

     scon_c equ 01010000b   ;串行口设置为10UART,允许接收

     th1_h equ 0fdh         ;晶振为11.0592M,波特率为9600时初值

     tmod_n equ 21h         ;设置定时器(T1作为波特率发生器工作在模式2T0为模式1

     ie_n equ 82h           ;设置串行,定时器0中断

     ip_n equ 12h           ;设置串行,定时器0中断为高级中断

     TH0_H EQU 0FCH

     TL0_L EQU 06BH         ;设定定时器01MS中断初值

;------------------初始化代码

clear_wdt macro             ;清硬看门狗宏定义

     orl 96h,#2

     ENDM

rand:    ORL 96H,#0E1H      ;启动硬件看门狗

     mov p0,#0ffh

     mov r0,#20h

     mov a,#0

start_300:mov @r0,a

     inc r0

     cjne r0,#128,start_300

     setb key_work      ;置巡回/定点标志

     mov p3,#0ffh

     mov p2,#0ffh

     mov disp_wc,#0         ;初始化闪烁控制位

     mov ip,#ip_n       ;设置串行,定时器0中断为高级中断

     mov scon,#scon_c

     MOV TMOD,#tmod_n  

     MOV TH0,#TH0_H         ;设定定时器初值

     MOV TL0,#TL0_L

     mov th1,#th1_h

     mov tl1,#th1_h

     mov ie,#ie_n

     mov pcon,#0

     SETB tr1

     SETB TR0

;-------显示初始化提示

     acall chuhao

     CLEAR_WDT    

start:   clr ea

     mov sp,#stack-1

     setb ea

     clr ri_f      ;清接收中标志

     clr p3.2      ;75176为接收状态

     jnb key_work,db_work

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

     setb ex1

     mov yd_n100,#0ah

     mov td_n,#0

s_0: anl disp_wc,#0f0h

     mov wdt,#0         ;清看门狗定时器

     clear_wdt

     mov a,yd_n100

     lcall send_order

     JNZ s_1

     mov disp_buf+5,yd_n100

     mov a,td_n

     lcall ascii_bcd

     jnz s_2

     mov disp_buf+4,td_n

     acall mov_to_disp

     mov wdt,#0

     clear_wdt

     mov a,#75

     add a,time_20ms

     cjne a,time_20ms,$

     mov wdt,#0

     clear_wdt

     mov a,#75

     add a,time_20ms

     cjne a,time_20ms,$

s_2: inc td_n

     mov a,td_n

     cjne a,#8,s_0

     mov td_n,#0

s_1: inc yd_n100

     MOV A,YD_N100

     cjne a,#10h,s_0

     mov yd_n100,#0ah

     ajmp s_0

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

db_work:setb ex1

     orl disp_wc,#01h

d_3: mov wdt,#0         ;清看门狗定时器

     clear_wdt

     jb key_up,d_4

     mov a,#2

     add a,time_20ms

     cjne a,time_20ms,$

     jb key_up,d_4

d_5: mov wdt,#0

     clear_wdt

     jnb key_up,d_5         ;等待向上键松开

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

d_53:    mov a,td_n

     cjne a,#7,d_50

     mov td_n,#0

d_52:    inc yd_n100

     mov a,yd_n100

     cjne a,#10h,d_51

     mov yd_n100,#0ah

     ajmp d_51

d_50:    inc td_n

d_51:    mov a,yd_n100

     lcall send_order

     JNZ d_52

     mov disp_buf+5,yd_n100

     mov a,td_n

     lcall ascii_bcd

     jnz d_53

     mov disp_buf+4,td_n

     acall mov_to_disp

     mov a,#100         ;2秒钟定时设定

     add a,time_20ms

     ajmp d_3

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

d_4: jb key_down,d_10

     mov a,#2

     add a,time_20ms

     cjne a,time_20ms,$

     jb key_down,d_3

d_6: mov wdt,#0

     clear_wdt

     jnb key_down,d_6   ;等待向下键松开

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

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

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