急求程序,89C51汇编语言写8个按键控制8个LED
这程序,是我写的。
程序,是好用的,初始状态,可以做到全灭。
你的电路,弄反了。
你把八个LED,都反过来,公共端,接在电源上,就可以了。
正确电路,可见:
http://zhidao.baidu.com/question/591052586.html
------------
按照楼主的电路,如下程序即可:
ORG 0000H
JMP MAIN
ORG 000BH
JMP T0_INT
ORG 0030H
;---------------------------------
MAIN:
MOV TMOD, #01H
MOV TH0, #HIGH(65536 - 10000) ;10ms@12MHz
MOV TL0, #LOW(65536 - 10000)
SETB TR0
MOV IE, #82H
MOV R7, #50 ;500ms
;初始化
MOV 20H, #03FH ;低 6 位的初始状态,是灭的
MOV 21H, #0FFH ;初始化
LOP:SJMP LOP
;---------------------------------
T0_INT:
MOV TH0, #HIGH(65536 - 10000) ;10ms@12MHz
MOV TL0, #LOW(65536 - 10000)
MOV A, P2
CPL A
MOV B, A
XRL A, 21H
ANL A, 21H
MOV 22H, A
MOV 21H, B
ANL A, #3FH
XRL 20H, A
MOV A, 22H
ANL A, #0C0H
XRL 23H, A
DJNZ R7, T0_E
MOV R7, #50 ;500ms亮500ms灭
JB 23H.7, S2
XRL 20H, #80H
SJMP S3
S2: ANL 20H, #7FH ;ORL 20H, #80H
S3: JB 23H.6, S4
XRL 20H, #40H
SJMP T0_E
S4: ANL 20H, #0BFH; ORL 20H, #40H
T0_E: MOV P1, 20H
RETI
;---------------------------------
END
ORG 00H
AJMP MAIN
ORG 13H
AJMP EX1INT
ORG 0030H
MAIN:
MOV P1,#0
SETB EA
SETB EX1
SETB IT1
MAIN1:
MOV P1,A
AJMP MAIN1
EX1INT:
INC A
CJNE A,#0,RTI
MOV A,#0
RTI:
RETI
END
程序如下:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
ORG 0030H
;---------------------------------
MAIN:
MOV TMOD, #01H
MOV TH0, #HIGH(65536 - 10000) ;10ms@12MHz
MOV TL0, #LOW(65536 - 10000)
SETB TR0
MOV IE, #82H
MOV R7, #50 ;500ms
LOP:SJMP LOP
;---------------------------------
T0_INT:
MOV TH0, #HIGH(65536 - 10000) ;10ms@12MHz
MOV TL0, #LOW(65536 - 10000)
MOV A, P2
CPL A
MOV B, A
XRL A, 21H
ANL A, 21H
MOV 22H, A
MOV 21H, B
ANL A, #3FH
XRL 20H, A
MOV A, 22H
ANL A, #0C0H
XRL 23H, A
DJNZ R7, T0_E
MOV R7, #50 ;500ms亮500ms灭
JB 23H.7, S2
XRL 20H, #80H
SJMP S3
S2: ORL 20H, #80H
S3: JB 23H.6, S4
XRL 20H, #40H
SJMP T0_E
S4: ORL 20H, #40H
T0_E: MOV P1, 20H
RETI
;---------------------------------
END
仿真电路如下:
C 语言程序可见:
http://hi.baidu.com/do_sermon/item/f8812371c31434590d0a0791
注意两者接口不同。
第一次按下,LED亮,抬起后再次按下,LED灭,依次循环?
;约定低有效
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB ET0
SETB EA
MOV 20H,#0
LOOP:
MOV A,P2
JB ACC.0,LP1
JB 00H,LP01
CLR P1.0
SETB 00H
SJMP LOOP
LP01:
SETB P1.0
CLR 00H
SJMP LOOP
LP1:
JB ACC.1,LP2
JB 01H,LP11
CLR P1.1
SETB 01H
SJMP LOOP
LP11:
SETB P1.1
CLR 01H
SJMP LOOP
LP2:
JB ACC.2,LP3
JB 02H,LP21
CLR P1.2
SETB 02H
SJMP LOOP
LP21:
SETB P1.2
CLR 02H
SJMP LOOP
LP3:
JB ACC.3,LP3
JB 03H,LP31
CLR P1.3
SETB 03H
SJMP LOOP
LP31:
SETB P1.3
CLR 03H
SJMP LOOP
LP4:
JB ACC.4,LP3
JB 04H,LP41
CLR P1.4
SETB 04H
SJMP LOOP
LP41:
SETB P1.4
CLR 04H
SJMP LOOP
LP5:
JB ACC.5,LP3
JB 05H,LP51
CLR P1.5
SETB 05H
SJMP LOOP
LP51:
SETB P1.5
CLR 05H
SJMP LOOP
LP6:
JB ACC.6,LP3
JB 06H,LP61
MOV R2,#0
SETB TR0
SETB 06H
SJMP LOOP
LP61:
SETB P1.6
CLR 06H
CLR TR0
SJMP LOOP
LP7:
JB ACC.7,LOOP
JB 07H,LP71
MOV R2,#0
SETB TR0
SETB 07H
LJMP LOOP
LP71:
SETB P1.7
CLR TR0
CLR 07H
LJMP LOOP
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
INC R2
MOV A,R2
CJNE A,#20,T01
T01:
JC T0E
MOV R2,#0
JNB 06H,T02
CPL P1.6
SJMP T0E
T02: JNB 07H,T0E
CPL P1.7
T0E:
RETI
END
汇编语言 控制数码管 基于89C51
一个简单的仿真实例,修改一下 I\/O 端口就可以了。仿真试试。
89c51 实现定时器 汇编语言
给你说下程序的方法:51单片机,采用定时器0定时,可以定时10ms,这样在中断程序里,100次,合计为1s,10s,分以此类推。显示可以放在定时器程序里扫描,也可以放在主程序里 扫描,动态扫描每个数码管在5ms以内,效果比较好,四位一共20ms完成。数据的刷新放在 定时器里,当1s到了,在定时器刷新显示...
89C51汇编语言求平均值,要求有小数
正确步骤如下:先把 20H 21H 清零;从 30H 单元开始,顺序取数,累加到 20H 21H 中,共 25 次;把 20H 21H 内容除以 25;(可先乘以 4,再除以 100;)(可在乘以 4 之后,分解成 BCD 码,万千百十个;)(小数点左移两位,即为除以 100。)...
汇编语言程序,八个灯,跑马灯
ORG 0000H LJMP MAIN ORG 000BH LJMP T0ISR ORG 0030H MAIN:MOV SP,#5FH MOV TMOD,#01H MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(65536-50000)SETB TR0 SETB ET0 SETB EA MOV A,#0FEH MOV P0,A MOV R2,#20 SJMP T0ISR:CLR TR0 MOV TH0,#HIGH(65536-50000)MOV TL0,#LOW(...
跪求单片机89C51控制交通灯的课程设计
为了让单片机工作,只能将程序写为二进制代码交给其执行;。前面说到,要想使LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将上面提到的8只LED流水灯实验写为汇编语言程序利用keil工具对源程序进行编写和编译。再利用编程器编译好的文件烧写到到单片机进行演示验证。再将烧写好的...
4*4矩阵键盘汇编语言程序,按键分别显示,1,2,3,4,5,6,7,8,9,A,b,c...
MOV R7, #60 MOV R6, #248 DLY1: DJNZ R6,DJNZ R7, DLY1 RET TABLE: DB 0C0H, 0F9H, 0A4H, 0B0H DB 99H, 92H, 82H, 0F8H DB 80H, 90H, 88H, 83H DB 0C6H, 0A1H, 86H, 8EH END89c51的,很经典,不懂的可以问我。
伪指令的用法
8.BIT 位地址符号命令 我相信很快就有人复制粘贴上来 不同的微机系统有不同的汇编程序,也就定义了不同的汇编命令。这些由英文字母表示的汇编命令成为伪指令。伪指令不是真正的指令,无对应的机器码,在汇编时不产生目标程序(机器码),只是用来对汇编过程进行某种控制。89C51汇编程序(如Intel的ASM51)...
单片机 按键秒表
秒表的设计程序 用89C51,外接晶振,复位电路,二个数码管,二个按键,做一个电子秒表,具体要求为用按键起停电子表,可用按键设计倒计时时间(如10S,20S,60S),并启动倒计时功能。能用按键选择以上两功能之一。三、程序代码:A_BIT EQU 20H ;数码管个位数存放内存位置 B_BIT EQU 21H ;数码管十...
单片机89c51的电子时钟课程设计
函数功能:写命令 入口参数:命令字 出口参数:无 \/ void lcd1602_WriteCmd(const uchar cmd){ lcd1602_CheckBusy();lcd1602_rs=0;lcd1602_rw=0;lcd1602_e=1;LCD1602_PORT=cmd;lcd1602_e=0;} \/ 函数名称:lcd1602_WriteData()函数功能:写数据 入口参数:c--待写数据 出口参数:无 \/ void ...
急,单片机89C51. p2口控制8个LED灯,正常运行时循环右移,中断(INT1)时...
回答:汇编没得,C的还差不多。另外,中断是哪来的?