您现在所在的是:

单片机论坛

回帖:11个,阅读:3005 [上一页] [1] [2] [下一页]
912
honeytek
文章数:4
年度积分:50
历史总积分:912
注册时间:2008/7/29
发站内信
发表于:2008/7/29 15:29:00
#0楼
我现在用51单片机写一个程序,用计数器0(T0)作为一个16位的计数器(方式1),计数范围1~65536,用中断使其停止计数。程序流程如下:
打开中断,启动计数器。在某一时刻发生了中断,这时计数器刚好计数到60000,也就是说T0(TH0和TL0)中的值是60000,那么,我现在想把T0中60000这数取来出,然后用七段码来显示出来(显示也是60000),不知该如何做?跪求各位大侠帮帮忙,小女子感激不尽!!!!我的E-MAIL是:honeytekw@126.com  谢谢!!
990
dxg520
文章数:13
年度积分:90
历史总积分:990
注册时间:2005/8/11
发站内信
发表于:2008/7/29 19:30:00
#1楼
读内从8AH和8CH的值
912
honeytek
文章数:4
年度积分:50
历史总积分:912
注册时间:2008/7/29
发站内信
发表于:2008/7/30 8:32:00
#2楼
以下是引用dxg520在2008-7-29 19:30:00的发言:
读内从8AH和8CH的值

请问怎样将8AH和8CH中的送去显示?谢谢!!!
1025
LANDHOLDER
文章数:35
年度积分:50
历史总积分:1025
注册时间:2008/7/30
发站内信
发表于:2008/7/30 13:11:00
#3楼
不知道
1392
lgx1213
文章数:249
年度积分:50
历史总积分:1392
注册时间:2003/9/4
发站内信
发表于:2008/8/1 22:06:00
#4楼
高手们到哪去了?给小妹妹解答一下了
全球第一本<单片机技术应用>电子杂志,欢迎免费下载!
WWW.MCU-SYS.COM
1012
a89982715
文章数:42
年度积分:50
历史总积分:1012
注册时间:2007/5/20
发站内信
发表于:2008/8/2 12:07:00
#5楼

以下是引用dxg520在2008-7-29 19:30:00的发言:
读内从8AH和8CH的值




请问怎样将8AH和8CH中的送去显示?谢谢!!!

要看你和七段码怎么连接的啊
看懂的要反复的看,看不懂的要硬着头皮看
5134
liguoxing
文章数:1695
年度积分:50
历史总积分:5134
注册时间:2006/4/21
发站内信
发表于:2008/8/5 14:20:00
#6楼
连接原理图
附件
以下为汇编程序:
;工作过程:当INT0有中断脉冲输入时,开始对T0计数输入口的信号计数,
;  当INT1有中断信号时,停止对T0口的计数,并把此次计数值送显到五位LED管
LEDX EQU 30H ;指定轮流显示5位LED的轮流数表志寄存器
LED EQU P1 ;LED显示的输出口
LED01 BIT P1.7 ;个位共阴极数码管的公共端
LED02 BIT P3.7 ;十位
LED03 BIT P3.0 ;百位
LED04 BIT P3.1 ;千位
LED05 BIT P3.5 ;万位
LED1 EQU 31H ;待显示的个位计数数码值
LED2 EQU 32H ;...十位
LED3 EQU 33H ;...百位
LED4 EQU 34H ;...千位
LED5 EQU 35H ;...万位
X1 EQU 36H ;16进制计数值高位
X2 EQU 37H ;16进制计数值低位
;======================================================================================================
ORG 0000H
LJMP START
ORG 003H
LJMP RUNINT0
ORG 000BH
LJMP RUNT0
ORG 0013H
LJMP RUNINT1
ORG 001BH
LJMP RUNT1
ORG 50H
START: CLR A
MOV LEDX, A ;指定轮流显示5位LED的轮流数表志寄存器
MOV X1, A ;计数值初始清零
MOV X2, A
MOV LED1, A ;置初始显示计数值为00000
MOV LED2, A
MOV LED3, A
MOV LED4, A
MOV LED5, A
MOV TMOD, #15H ;设置T0为计数方式1,T1为定时方式1.
MOV IP, #00000100B ;INT1中断为高优先级
MOV IE, #10001001B ;开总中断及T1,INT0允许
MOV TH0, #00H ;置计数器0值
MOV TL0, #00H
MOV TH1, #0F8H ;重置T1初值4mS=0F830H(主频为6MHZ时,五位显示完毕共需20MS,即50HZ的显示频率
MOV TL1, #030H ;
SETB TR1
;#############################################################################################################################


;===================================================================================================================
; 主循环程序(也是按键查询程序)
MAIN: MOV R0, X1
MOV R1, X2
LCALL RUN5BCD
CLR TR1 ;暂时停止轮流数码显示的计时,以免误读正在转换中的不正确的显示值
MOV LED1, R2 ;存转换好的个位数码管值
MOV LED2, R3 ;..........十位
MOV LED3, R4
MOV LED4, R5
MOV LED5, R6
SETB TR1 ;恢复轮流数码显示的计时

;这里放用户的其它程序,比如按键查询等
;...............................
;................................
LJMP MAIN
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

; T0中断程序
;(假如计数值溢出)
RUNT0: CLR TR0
MOV TH0, #0FFH ;
MOV TL0, #0FFH ; ;
MOV X1, #0FFH ;计数器溢出,置最大值
MOV X2, #0FFH
RETI
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$444
; T1中断程序
;(4mS到了显示一位LED)(5位数码管轮流显示的定时器每隔4mS轮流点亮1个数码管,)
RUNT1: MOV TL1, #0F8H ;重置T1初值4mS=0F830H(主频为6MHZ时,五位显示完毕共需20MS,即50HZ的显示频率
MOV TH1, #30H ;
PUSH ACC ;
PUSH PSW ;
MOV A, #05H
DEC LEDX ;变换轮流标志
CJNE A, LEDX, OB1 ;
OB1: JC OB3 ;
OB2: MOV A, LEDX ;
MOV DPTR, #TBJ ;
CLR C
RLC A ;
ADDC A, 2CH ;
JMP @A+DPTR ;
TBJ: LJMP OUTLED1 ;
LJMP OUTLED2 ;
LJMP OUTLED3 ;
LJMP OUTLED4 ;
LJMP OUTLED5 ;

OB3: MOV LEDX, #05H
AJMP OB2
OUTLED1:CLR LED01 ;接通个位LED共阴极公共端
SETB LED02
SETB LED03
SETB LED04
SETB LED05
MOV LED, LED1 ;输出个位字码
LJMP LED6
OUTLED2:SETB LED01 ;十位LED阴极选通
CLR LED02
SETB LED03
SETB LED04
SETB LED05
MOV LED, LED2 ;输出十位字码
LJMP LED6
OUTLED3:SETB LED01 ;百位LED阴极选通
SETB LED02
CLR LED03
SETB LED04
SETB LED05 ;
MOV LED, LED3 ;输出百位字码
LJMP LED6
OUTLED4:SETB LED01 ;千位LED阴极选通
SETB LED02
SETB LED03
CLR LED04
SETB LED05
MOV LED, LED4 ;输出千位字码
LJMP LED6
OUTLED5:SETB LED01 ;万位LED阴极选通
SETB LED02
SETB LED03
SETB LED04
CLR LED05
MOV LED, LED5 ;输出万个位字码
AJMP LED6 ;退出本显示程序
LED6: POP PSW ;
POP ACC ;
RETI ;
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$444
; INT0中断
;(启动计数指令到达)
RUNINT0: CLR EX0 ;暂时屏蔽INT0中断
MOV TL0, #00H
MOV TH0, #00H
SETB TR0 ;启动计数
SETB EX1 ;允许停止计数指令的输入
SETB EX0 ;允许重新计数指令的输入
RETI
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$444
; INT1中断
;(停止计数指令到达,并计算计数值)
RUNINT1: CLR EX0 ;暂时屏蔽INT0中断
CLR EX1
CLR TR0 ;停止T0计数
MOV X1, TL0 ;读计数值
MOV X2, TH0 ;
RUNIN0OUT: MOV TH0, #00H ;
MOV TL0, #00H ;
SETB EX0 ;这里暂时不启动T0,及INT1了
RETI
;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$44
; (RUNBCD)处理子程序
;以下为两字节转5位BCD的正式程序,入口条件:R1,R0位待转换16进制的两字节数据,转换后的5位BCD码放到R6,R5,R4,R2,R中
RUN5BCD: CLR C ;实际上此时R4>1,86,9FH
MOV R7, #00H ;
MOV A, R0 ;
SUBB A, #10H ;除数10000=2710H
MOV R0, A ;
MOV A, R1 ;
SUBB A, #27H ;
MOV R1, A ;
INC R7 ;
JNC RUN5BCD ;减的够转RUN5BCD
DEC R7 ;减不够则把R7回减1,并把刚才R1,R0值回加
MOV A, R0 ;
ADD A, #10H ;
MOV R0, A ;
MOV A, R1 ;
ADDC A, #27H ;
MOV R1, A ;此例R1,R0不会进位就不存进位值了
MOV A, R7
MOV R6, A ;得万位BCD码
MOV R7, #00H ;
RUN5BCD1:MOV A, R0 ;
SUBB A, #0E8H ;除数1000=03E8H
MOV R0, A ;
MOV A, R1 ;
SUBB A, #03H ;
MOV R1, A ;
INC R7
JNC RUN5BCD1 ;
DEC R7 ;减不够,回减R7,并回加刚才所减值
MOV A, R0 ;
ADD A, #0E8H ;
MOV R0, A ;
MOV A, R1 ;
ADDC A, #03H ;
MOV R1, A ;
MOV A, R7
MOV R5, A ;得千位BCD码
MOV R7, #00H ;
RUN5BCD2:MOV A, R0 ;
SUBB A, #100 ;除数100=
MOV R0, A ;
MOV A, R1 ;
SUBB A, #00H ;
MOV R1, A ;
INC R7
JNC RUN5BCD2 ;
DEC R7 ;实际上此时R1,R0>99
MOV A, R0 ;
ADD A, #100 ;
MOV R0, A ;
MOV A, R7
MOV R4, A ;得百位BCD码
RUN5BCD3:MOV A, R0 ;
MOV B, #10
DIV AB ;除数10=
MOV R3, A ;得十位BCD码
MOV R2, B ;得个位BCD码

; 以下为BCD码转共阴极LED显示码子程序

MOV R0, #4BH ;置指商的首址(万位)3b,9a,c9,ff
MOV R1, #05H ;转换LED的个数
MOV DPTR, #TAB
MOV A, R6 ;
MOVC A, @A+DPTR ;
MOV R6, A ;
MOV A, R5 ;
MOVC A, @A+DPTR ;
MOV R5, A ;
MOV A, R4 ;
MOVC A, @A+DPTR ;
MOV R4, A ;
MOV A, R3 ;
MOVC A, @A+DPTR ;
MOV R3, A ;
MOV A, R2 ;
MOVC A, @A+DPTR ;
MOV R2, A ;
RET
;--------------------------------------------------------------------------
;采用五位共阴的数码管
;P1.0接数码管段码的(a) P1.1(b).P1.2(c).P1.2(d).p1.4(e).p1.5(f).p1.6(g)
TAB: DB 10111111B ;11000000B ;0    
        DB 10000110B ;11111001B ;1    
        DB 11011011B ;10100100B ;2    
        DB 11001111B ;10110000B ;3    
        DB 11100110B ;10011001B ;4    
        DB 11101101B ;10010010B ;5    
        DB   11111101B ;10000010B ;6    
        DB     10000111B ;11111000B ;7    
        DB     11111111B ;10000000B ;8
        DB   11101111B ;10010000B ;9      
;--------------------------------------------------------------------------------


;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$


END

[此贴子已经被作者于2008-8-5 14:24:50编辑过]
呜呜。我没有个性化Logo,谁能帮我设计个?拜托啦。
1185
85880527
文章数:136
年度积分:50
历史总积分:1185
注册时间:2006/1/16
发站内信
发表于:2008/8/6 18:25:00
#7楼
此楼内容不符合板块规定,不予显示! 查看原帖内容>>
912
honeytek
文章数:4
年度积分:50
历史总积分:912
注册时间:2008/7/29
发站内信
发表于:2008/8/8 8:57:00
#8楼
六楼的大哥!十分感谢你的帮忙,谢谢!!!!
1185
85880527
文章数:136
年度积分:50
历史总积分:1185
注册时间:2006/1/16
发站内信
发表于:2008/8/8 9:52:00
#9楼
斑竹你太无耻了,凭啥子要删我的帖子

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

109.2007