❶ 红外遥控解码程序
这是一段把红外遥控接收后用数码管显示出来的程序,你参考一下吧。
程序已经通过编译了。
;遥控器读码程序(晶振为11.0592),该程序能读出遥控器的控制码,并通过LED显示出来
;OMEN 2005/1/16于TCL
;***************************************************************
A_BIT EQU 20H ;数码管个位数存放内存位置
B_BIT EQU 21H ;数码管十位数存放内存位置
NO_OUT EQU 24H ;最终控制号码存放单元
A_NO EQU 25H ;数码管个位数对应代码存放内存位置
B_NO EQU 26H ;数码管十位数对应代码存放内存位置
;22H,23H为控制码及其反码的存放单元
;*******************<<主程序>>***********************************
ORG 0000H
AJMP 0030H
ORG 0003H ;外部中断P3.2脚INT0入口地址
AJMP INT ;转入外部中断服务子程序(解码程序)
ORG 0030H
AJMP MAIN ;转入主程序
;***************************************************************
MAIN: MOV NO_OUT,#0H
SETB EA ;打开CPU总中断请求
SETB IT0 ;设定INT0的触发方式为脉冲负边沿触发
SETB EX0 ;打开INT0中断请求
LOOP: MOV A,NO_OUT;将按键的键值通过P1口的8个LED显示出来!
CPL A ;由于P1发光二极管显示的是电平的反状态,所以取反
MOV P1,A ;发光二极管显示输出
LCALL DISPLAY;LED数码管显示输出
AJMP LOOP;循环
;********************<<中断接受遥控程序>>************************
;以下为进入P3.2脚外部中断子程序,也就是解码程序
INT:
PUSH ACC
PUSH PSW ;将PSW和ACC推入堆栈保护
CLR EA ;暂时关闭CPU的所有中断请求
MOV R6,#10
SB: LCALL DL865;调用865微秒延时子程序
JB P3.2,EXIT;延时865微秒后判断P3.2脚是否出现高电平如果有就退出解码程序
DJNZ R6, SB;重复10次,目的是检测在8650微秒内如果出现高电平就退出解码程序
;以上完成对遥控信号的9000微秒的初始低电平信号的识别。
JNB P3.2, $ ;等待高电平避开9毫秒低电平引导脉冲
LCALL DL4737 ;延时4.74毫秒避开4.5毫秒的结果码
MOV R7,#16;忽略前26位系统识别码
JJJJA:JNB P3.2,$;等待地址码第一位的高电平信号
LCALL DL865;高电平开始后用865微秒的时间尺去判断信号此时的高低电平状态
MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
JNC UUUA;如果为0就跳转到UUUA
LCALL DL1000;检测到高电平1的话延时1毫秒等待脉冲高电平结束
UUUA: DJNZ R7,JJJJA
MOV R1,#22H ;设定22H为起始RAM区
MOV R2,#2;接收从22H到23H的2个内存,用于存放操作码和操作反码
PP: MOV R3,#8;每组数据为8位
JJJJ: JNB P3.2,$;等待地址码第一位的高电平信号
LCALL DL865;高电平开始后用865微秒的时间尺去判断信号此时的高低电平状态
MOV C,P3.2;将P3.2引脚此时的电平状态0或1存入C中
JNC UUU;如果为0就跳转到UUU
LCALL DL1000;检测到高电平1的话延时1毫秒等待脉冲高电平结束
UUU: MOV A,@R1;将R1中地址的给A
RRC A;将C中的值0或1移入A中的最低位
MOV @R1,A;将A中的数暂时存放在R1数值的内存中
DJNZ R3,JJJJ;接收满8位换一个内存
INC R1;对R1中的值加1,换下一个RAM
DJNZ R2,PP ;接收完8位数据码和8位数据反码,存放在22H/23H中
MOV A,22H
CPL A;对22H取反后和23H比较
CJNE A,23H,EXIT;如果不等表示接收数据发生错误,放弃
MOV A,22H
MOV NO_OUT,A
;LCALL EEPROM_C ;清除以前的保存的码
;LCALL DL4737
;LCALL EEPROM_W ;把码存在单片机内部的EEPROM里
;LCALL DL4737
CLR P3.6;蜂鸣器鸣响-嘀嘀嘀-的声音,表示解码成功
LCALL DL4737
LCALL DL4737
LCALL DL4737
SETB P3.6;蜂鸣器停止
lcall DL4737
EXIT: SETB EA ;允许中断
POP PSW
POP ACC ;将PSW和ACC推入堆栈保护
RETI ;退出解码子程序
;*******************<<LED数码管显示子程序>>**********************
DISPLAY:
MOV A,NO_OUT ;将NO_OUT分成个位和16位
ANL A,#0FH ;取低四位放在a_bit
MOV A_BIT,A ;个位
MOV A,NO_OUT ;
RR A
RR A
RR A
RR A ;四次移动,把高四位移到低四位
ANL A,#0FH;取高四位放在B_bit
MOV B_BIT,A ;个位在b
MOV DPTR,#NUMTAB ;指定查表启始地址
MOV A,A_BIT ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
MOV A_NO,A
MOV A,B_BIT ;取十位数
MOVC A,@A+DPTR ;查十位数的7段代码
MOV B_NO,A
DPLOP:MOV A,A_NO
MOV P0,A ;送出个位的7段代码
;SETB P2.1;关闭十位显示,防止鬼影
CLR P2.0 ;开个位显示
LCALL DL40 ;显示4737微秒
SETB P2.0;关闭个位显示,防止鬼影
MOV A,B_NO
MOV P0,A ;送出十位的7段代码
CLR P2.1 ;开十位显示
LCALL DL40 ;显示4737微秒
SETB P2.1;关闭十位显示,防止鬼影
RET
;**********************<<延时程序>>******************************
DL865: MOV R4,#12 ; 1.09*(2R5+4)*R4+2延时子程序1,精确延时865微秒
D1: MOV R5,#31
DJNZ R5,$
DJNZ R4,D1
RET
DL4737: MOV R4,#12 ;延时子程序2,精确延时4737微秒
D2: MOV R5,#179
DJNZ R5,$
DJNZ R4,D2
RET
DL1000: MOV R4,#17;延时程序3,精确延时1000微秒
D3: MOV R5,#25
DJNZ R5,$
DJNZ R4,D3
RET
DL40: MOV R4,#1;延时程序4,精确延时40/17微秒
D4: MOV R5,#1
DJNZ R5,$
DJNZ R4,D4
RET
;****************************************************************
;如果是共阳数码管的显示代码 1-F 16个代码
NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH ;STC新板的
END
❷ 急求一份关于单片机红外遥控电子密码锁相关的参考文献。来5份左右外文的。多多益善。先谢谢啦。
[1] 于殿泓,王新年.单片机原理与程序设计实验教程[M].西安:西安电子科技大学出版社,2007,8.
[2] 赵文博,刘文涛.单片机语言C51程序设计[M].北京:人民邮电出版社,2005,10.
[3] 李爱秋.红外线遥控12位电子密码锁的设计[J]. 温州职业技术学院学报第8卷第一期,2008.
[4] 陈杰,黄鸿.传感器与检测技术[M].北京:高等教育出版社,2010,8.
[5] 周航慈. 单片机应用程序设计技术[M]. 北京:北京航空航天大学出版社,2011,2.
[6] 李朝青. 单片机原理及接口技术[M]. 北京:北京航空航天大学出版社, 2005,10.
[7] 孙育才. MCS-51系列单片微型计算机及其应用[M]. 东南大学出版社, 2004,6.
[8] 沈红卫. 单片机应用系统设计实力与分析[M]. 北京:北京航空航天大学出版社,2003.
[9] 徐爱钧, 彭秀华. 单片机高级语言C51应用程序设计[M].北京航空航天大学出版社,2006.
[10] 曾一江. 单片微机原理与接口技术[M]. 北京:科技出版社,2009,12.
[11] 康华光. 电子技术基础(模拟部分)[M]. 北京:高等教育出版社, 2004,4.
[12] Nishino S F,Paoli G C,Spain J C. Aerobic degradation of dinitroto-luenes and pathway for bacterial degradation of 2,6-dinitrotoluene Volume 66,2006.
[13] Kennes C,W M Wu,L Bhatnagar et al. Anaerobic dechlorination and mineralization of PCP and 2,4,6-trichlorophenol by the methanogenic PCP-degrading granules Volume 44,2004.
[14] Philips. Proct Specification. COMS single-chip 8-bit microcontroller.
[15] Hermarn K P. Neubert. Instrument Transcers-An Introction to their Performance and Design.2nd Ed[M]. Clarendon Press, Oxford. 1975.
❸ 来个红外线遥控的编码程序吧!用汇编的!
红外遥控电子密码锁程序
ORG 0000H ;主程序
CLR P1.7 ;清零
MOV RO, #OOH
CLR P1.3 ;关报警
CLR P1.7 ;P1.7清零
CLR P1.4 ;关报警
MOV RO, #OOH ;串行口初始化
MOV 52H, #02H ;将立即数02H送52H
MOV TMOD , #20H ;设置T1工作方式2
MOV TL1 ,#OF4H ;定时初始值送TL1
MOV TH1 ,#OF4H ;定时初始值送TH1
SETB TR1 ;启动定时器T1
MOV SCON, #ODOH ;定义串行行工作方式3
MOV PCON , #OOH
KEY: JNB P1.5 , KEP1 ;选择密码57618
LJMP KEP2
*******************************************************密码57618程序
KEP1: MOV P2 ,#0FFH ;关显示
MOV A , P0 判断是否有键按下
CPL A ;对P0口的数据取反
ANL A , #OFFH ;立即数OFF 与PO的数据相与
JNZ JP ;有键按下转至JP
MOV A , P1 ;判断是否有键盘按下
CPL A ;将P1口的数据取反
ANL A ,#O7H ;累加器数据为零转遥控接收程序
JZ WAIT
ACALL D10MS ;调用10秒延时
MOV A , P1
CPL A
ANL A ,#O7H
JZ WAIT
PP1: CJNE A , #01H ,JP1
MOV P2 , #89H ;显示字符”H”
LJMP K0P1
PP2: CJNE A , #02H ,JP2
MOV P2 , #89H ;显示字符”H”
LJMP KOP1
JP2: CJNE A , #04H ,KY
MOV P2 ,#89H ;显示字符”H”
JP3: MOV A , #O7H
CJNE A , #07H ,JP3
LJMP LP1
KOP1: MOV A ,P1
ANL A, #07H
CJNE A , #07H ,KOP1
LJMP KEP1
JP: LCALL D10MS
MOV A , PO
CPL A,
ANL A, #OFFH
JZ C6
CJZE A ,#01H ,KEY02
MOV P2, #89H
LJMP KEY1
KEY02: CJNE A ,#02H ,KEY03
MOV P2 ,#89H
LJMP KJP1
KEYO3: CJNE A , #04H, KEY04
MOV P2 ,#89
LJMP KJP1
KEY04: CJZE A , #08H, KEY05
MOV P2 ,#89H
LJMP KJP1
KEY05: CJZE A , #10H, KEY06
MOV P2 ,#89H
LJMP KJP1
KEY06: CJZE A , #08H, KEY07
MOV P2 ,#89H
LJMP KJP1
KEY07 CJZE A , #10H KEY08
MOV P2 ,#89H
LJMP KJP1
KEY08 CJZE A , #10H, C6
MOV P2 ,#89H
LJMP KJP1
KJP1: MOV A, P0
CJNE A , #OFFH ,KJP1
C6: LJMP WAIT
********************************************************************
KEY1: LCALL MP
CJNE A , #02H , KEY03
MOV P2 , #89H
KEY2 LCALL MP
CJNE A , #04 , KEY02
MOV P2 , #89H
KEY3 LCALL MP
CJNE A , #08 , KEY02
MOV P2 , #89H
KEY4 LCALL MP
CJNE A , #10H, KEY02
MOV P2 , #89H
KEY5 MOV A ,P0
CJNE A , #0FFH, KEY5
MOV P2 , #OFFH
MOV R5 ,#30H
KEY6: MOV A , PO
CPL A
ANL A , #OFFH
JNZ BB2
MOV A ,P1
CPL A
ANL A , #O7H
JZ BB1
LCALL D10MS
MOV A , P1
CPL A
ANL A ,#07H
JZ
CJNE A ,#04H ,B1
MOV P2 , #89H
LJMP LP2
B1: CJNE A, #01H ,BL1
MOV P2 ,#89H
LJMP KOP1
BL1: CJNE A , #02H ,BB1
MOV P2 , #89H
LJMP KOP1
BB2: LCALL D10MS
MOV A , P0
CPL A
ANL A , #OFFH
JZ BB1
LJMP KEY02
BB1: MOV R7 ,#OC8H
BB4: MOV R6 ,#OF9H
NOP
NOP
BB5: JNZ R6 ,BB5
DJNZ R7, BB4
DJNZ R5 , KEY6
LJMP WAIT
************************************************************密码81675程序
KEP2: MOV P2 ,#OFFH ;关显示
MOV A ,PO
] CPL A
ANL A , #OFFH
JNZ HP
MOV A ,P1
CPL A
ANL A , #07H
JZ C9
LCALL D1OMS
MOV A ,P1
CPL A
ANL A ,#07H
JZ C9
BB: CJNE A , #O1H ,HP1
MOV P2 ,#89H
LJMP K1P1
HP1: CJNE A ,#02H ,HP2
MOV P2 ,#89H
LJMP K1P1
HP2: CJNE A ,#04H ,C9
MOV P2, #89H
HP3: MOV A ,P1
ANL A ,#07H
CJNE A ,#07H ,HP3
MOV P2 ,#OFFH
LJMP LP1
K1P1 : MOV A ,P1
ANL A ,#O7H
CJNE A ,#07H ,K1P1
C9: LJMP WAIT
HP: LCALL D1OMS
MOV A , PO
CPL A
ANL A ,#OFFH
JZ C9
CJNE A , #1OH,K0Y02
MOV P2 ,#89H
LJMP K0Y1
K0Y02: CJNE A ,#01H ,K0Y03
MOV P2 ,#89H
LJMP KUP1
K0Y03 CJNE A ,#02H ,K0Y04
MOV P2 ,#89H
LJMP KUP1
K0Y04 CJNE A ,#04H ,K0Y05
MOV P2 ,#89H
LJMP KUP1
K0Y05 CJNE A ,#08H ,K0Y06
MOV P2 ,#89H
LJMP KUP1
K0Y06 CJNE A ,#20,K0Y07
MOV P2 ,#89H
LJMP KUP1
K0Y07 CJNE A ,#40,K0Y08
MOV P2 ,#89H
LJMP KUP1
K0Y08 CJNE A ,#80,U2
MOV P2 ,#89H
LJMP KUP1
KUP1: MOV A ,PO
CJNE A ,#OFFH ,KUP1
U2: LJMP WAIT
K0Y1: LCALL MP
CJNE A #08H ,K0Y02
MOV P2 ,#89H
K0Y2 LCALL MP
CJNE A #04 ,K0Y02
MOV P2 ,#89H
K0Y3 LCALL MP
CJNE A #02 ,K0Y02
MOV P2 ,#89H
K0Y4 LCALL MP
CJNE A #01H ,K0Y02
MOV P2 ,#89H
K0Y6: MOV A ,PO
CPL A
ANL A ,#OFFH
JNZ PP2
MOV A , P1
CPL A
ANL A ,#07H
JZ PPL
LCALL D10MS
MOV A , P1
CPL A
ANL A ,#07H
JZ PP1
CJNE A ,#04H ,Y1
MOV P2 , 389H
LJMP LP2
Y1: CJNE A ,#01H ,Y11
MOV P2 ,#89H
LJMP K1P1
Y11: CJNE A , #02H ,PP1
MOV P2 ,#89H
LJMP K1P1
PP2: LCALL D10MS
MOV A, PO
CPL A
ANL A ,#OFFH
JZ PP1
LJMP K0Y02
PP1: MOV R7 ,#OC8H
PP4: MOV R6 , #OF9H
NOP
NOP
PP5: DJNZ R6 ,PP5
DJNZ R7 ,PP4
DJNZ R5 ,K0Y6
LJMP WAIT
*****************************************************报警程序
LP1: SETB P1.4
INC RO
P019: MOV R3 ,#05H
P020: MOV R7 ,#0A0H
P018: SETB P1.3
LCALL P01A
CLR P1.3
LCALL P01A
DJNZ R7 ,P018
DJNZ R3 ,P020
CLR P1.3
CJNE R0 , #03H ,P017
LJMP P019
P017: CLR P1.4
LJMP WAIT
****************************************************开锁程序
LP2: SETB P1.7
LCALL T5S
CLR P1.7
MOV R0 ,#00H
LJMP WAIT
******************************************************判断键是否释放
MP: MOV A ,PO
CJNE A ,#OFFH ,MP
MOV P2 ,#OFFH
PM: MOV R5 ,#30H
LCALL TP
RET
******************************************************判断是否有键按下
TP: MOV A ,PO
CPL A
ANL A , #OFFH
JNZ AP
MOV A ,P1
CPL A
ANL A, #O7H
JZ TP3
LCALL D10MS
MOV A , P1
CPL A
ANL A , #07H
JZ TP3
LCALL D10MS
MOV A ,P1
CPL A
ANL A ,#07H
JZ TP3K
CJNE A, #04H ,C1
MOV P2 ,#89H
C3: MOV A P1
ANL A , #07H
CJNE A #07H ,C3
MOV P2 ,#0FFH
LJMP LP1
C1: CJNE A ,#01H ,C2
MOV P2 ,#OCOH
LJMP KCP1
C2: CJNE A ,#02 ,U11
MOV P2 ,#90HP
LJMP KCP1
KCP1: MOV A , P1
ANL A ,#07H
CJNE A ,#07H ,KCP1
U11: LJMP WAIT
AP: LCALL D10MS
MOV A ,P0
CPL A
ANL A , #0FFH
JZ TP3
RET
************************************************************400M延时程序
TP3: MOV R7 ,#OC8H
TP1: MOV R6 , #OF9H
NOP
NOP
TP2: DJNZ R6 , TP2
DJNZ R7 ,TP1
DJNZ R5 ,TP ;10S
LJMP WAIT
*********************************************************10延时程序]
D10MS : MOV R7 ,#05H
LOOP1: MOV R6 ,#OF9H
NOP
NOP
LOOP2: DJNZ R6 , LOOP2
DJNZ R7 ,LOOP1
RET
*****************************************************延时程序
P01A: MOV R2 ,#06H
LCALL DELY
RET
DELY: PUSH 02H
DEL2 : PUSH 02H
DEL3 : PUSH 02H
DEL4: DJNZ R2, ,DEL4
POP O2H
DJNZ R2 ,DEL3
POP O2H
DJNZ R2 ,DEL2
POP O2H
DJNZ R2 ,DELY
RET
******************************************************5S 延时程序
T5S: MOV R4 ,#15H
TS1: MOV R3 ,#64H
TS2: MOV R2 ,#05H
TS3: MOV R1 , #OF9H
NOP
NOP
T5S4 DJNZ R1 ,TS4
DJNZ R2 ,TS3
DJNZ R3 ,TS2
DJNZ R4 ,TS1
RET
3、遥控发送程序
ORG 0000H
LOOPO: MOV SCON ,#0C0H ;设定串行口工作方式3
MOV TMOD , #20H ;T1工作方式2
MOV PCON , #00H ;波特率设置
MOV TL1 , #OF4H ;定时初始值F4送TL1
MOV TH1 , #OF4H ;定时初始值F4送TH1
*******************************************************************
CP: JB P1.0 ,CPK ;判断遥控按键P1.0是否按下
LCALL PP ;调用延时
JB P1.0 , CP
STEB TR1 ;启动定时器T1
MOV 50H ,#5FH ; 将立即数5FH 送50H 存储单元
MOV RO ,#50H ;将立即数50H 送RO寄存器
MOV R1 , #05H ;将立即数05H送R1寄存器
IND: MOV A ,@R0 ; 将50H中的5F送累加器A
MOV C , P
MOV TB8 ,C
MOV SBUF ,A ;将要发送数据5F送串行数据缓冲器
AAA : JNB P1.1 ,ON1 ; P1.1是”0”电平时转至调制程序
BBB” JB P1.1 ,CCC ;P1.1是”1”电平等待
AMP AAA
CCC : JBC TI ,CP ;判断发送中断标志位]
SETB P1.2 ;P1.2置1
AJMP BBB
ON1: ACALL ON
AJMP AAA
PP: MOV R6, #05H ;延时子程序
100P3: MOV R5 , #OF9H
NOP
NOP
100P4: DJNZ R5 ,100P4
DJNZ R6 ,100P3
RET
ON: CP1 P1.2 ;0电平调制程序
。。。。。。。。。。。。。。(共有82个CP1 P1.2)
RET
********************************************************************
4、遥控接收程序
WAIT: JBC R1 ,LOOP5 ;遥控接收程序
LJMP KEY
LOOP5: MOV R0 ,#51H ;将立即数51H送R0
MOV R7 ,#03H ;将立即数03H送R7
LOOP6: MOV A ,SBUF ;将串行缓冲器接收到的数据累加器A
JNB PSW.0 LOOP7 ;标志位F0清零了吗?
JNB RB8 ,LOOP8 ;数据接收完了吗?
LOOP9 MOV @RO ,A ;开锁处理程序
MOV R1 , 51H
CJNE R1 ,#1EH ,LP
DJNZ 52H , KP
CLR P1.7
MOV 52H ,# 02H
MOV R0 ,#OOH
LJMP WAIT
KP: SETB P1.7
MOV R0 ,#00H
LJMP WAIT
LP: DJNZ R7 ,WAIT
CLR PSW.5
LJMP WAIT
LOOP7: JB RB8 , LOOP8
LJMP LOOP9
LOOP8: SETB PSW.5 ;给标志位F0置1
LJMP WAIT ;继续接收数据
参考下!
❹ 红外线遥控器解码C语言程序代码 SM0038接受头
//////////////////////////////////////
//晶振频率为6MHz 一个机器周期2us //
//实现按键地址码、指令码的数码管显示//
//2010-06-01 //
//////////////////////////////////////
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit la=P2^6;
sbit wela=P2^7;
bit overflag,dataover;//开始接收数据,数据处理完毕
uchar timedata;//定时器0溢出次数
uchar chubus[33];//33Byte数据 timedata组成的数组
uchar jieguos[4];//地址码,地址反码,数据码,数据反码;
void initial()//初始化
{
IT0=1;EX0=1;//负边沿触发
TMOD=0x01;ET0=1;TR0=1;//模式1,十六位定时器
TH0=0xff;TL0=0x06;//0.5ms溢出
EA=1; //开总中断
}
void time0() interrupt 1//定时器0中断
{TH0=0xff;TL0=0x06;
timedata++;
}
void ex0() interrupt 0//外部中断0,接收数据
{
static bit startflag;//开始接收
static uchar i;
if(startflag)
{
if(timedata<32&&timedata>=16) i=0;
chubus[i]=timedata;
timedata=0;
i++;
if(i==33){overflag=1;i=0;}
}
else
{
startflag=1;
timedata=0;
}
}
void chulidata()
{
uchar chubu;//初步数据
uchar jieguo;//结果数据
uchar x,y,z=1;
for(x=0;x<4;x++)//处理四组数据
{
for(y=1;y<=8;y++)//处理一组数据8Byte
{
chubu=chubus[z];
jieguo=jieguo>>1;
if(chubu>3) jieguo=jieguo|0x80;//大于1.5mS为1
z++;
}
jieguos[x]=jieguo;
jieguo=0;
}
dataover=1;
}
void delay(uint z)
{
uint x ,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display()
{
uchar gao,gao1;
uchar di,di1;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
gao1=table[jieguos[0]/16];
di1=table[jieguos[0]%16];
gao=table[jieguos[2]/16];
di=table[jieguos[2]%16];
la=1;
P0=gao1;
la=0;
P0=0xff;
wela=1;
P0=0x7e;
wela=0;
delay(2);
la=1;
P0=di1;
la=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(2);//地址码
la=1;
P0=gao;
la=0;
P0=0xff;
wela=1;
P0=0x77;
wela=0;
delay(2);
la=1;
P0=di;
la=0;
P0=0xff;
wela=1;
P0=0x6f;
wela=0;
delay(2);//指令码
}
void main()
{
initial();//初始化
while(1)
{
if(overflag)//数据接收完毕
{
chulidata();//处理数据,完成标志dataover
overflag=0;
}
if(dataover)
{
display();//数码管显示
}
}
}