求汇编51单片机接两个数码管从00显示到99,外部中断0接一开关用于复位。麻烦注解下每句话的意思!! 汇编4个数码管显示从40到9999 51单片机控制
\u6c42\u6c47\u7f1651\u5355\u7247\u673a\u63a5\u4e24\u4e2a\u6570\u7801\u7ba1\u4ece00\u663e\u793a\u523099\uff0c\u91c7\u7528\u5916\u90e8INT0\u4e2d\u65ad\u4e00\u6b21\u52a01 \u7528\u6c47\u7f16\u8bed\u8a00\u770b\u770b\u8fd9\u4e2a\u4eff\u771f\u5b9e\u4f8b\uff0c\u6c47\u7f1651\u5355\u7247\u673a\u63a5\u56db\u4e2a\u6570\u7801\u7ba1\u4ece0000\u663e\u793a\u52309999\uff0c
\u91c7\u7528\u5916\u90e8INT0\u4e2d\u65ad\u4e00\u6b21\u52a01 \uff0cINT1\u4e2d\u65ad\u6e05\u96f6\uff0c\u7528\u6c47\u7f16\u8bed\u8a00\u3002
\u90a3\u53eb4\u4e2a\u4e03\u6bb5\u6570\u7801\u7ba1\u3002\u5199\u7a0b\u5e8f\u9700\u5148\u6709\u539f\u7406\u56fe\uff0c\u662f\u5b9e\u7269\u5f00\u53d1\u677f\u5417?
\u6216\u662f\u4eff\u771f\uff0c\u8981\u5148\u753b\u4eff\u771f\u56fe\u7684\u3002
CNT EQU 32H
ORG 0000H ;程序开始
AJMP MAIN
ORG 000BH ;定时器0中断地址
AJMP TIME
ORG 0013H ;外总中断0中断地址
AJMP INT00
ORG 0030H ;程序开始执行
MAIN:
MOV SP,#5FH ;移动堆栈
MOV COUNT,#00H ;清寄存器
MOV CNT,#00H ;
MOV TMOD,#01H ;定时器0工作方式1
MOV TH0,#3CH ;50MS初值
MOV TL0,#0B0H ;
SETB ET0 ;开定时器0中断
SETB EA ;开总中断
SETB EX0 ;开外总中断0中断
SETB TR0 ;开启定时器0
LOOP:
CALL DISP ;调用显示子程序
JMP LOOP ;采用查询方式
;P0口数据输出。P2.0、P2.1位码控制端
DISP: MOV A,CNT ;CNT数据送入A中
MOV B,#10 ;10送入B中=分离出个位、十位数
DIV AB ;A除B
MOV R0,B ;B送入R0中
MOV DPTR,#TAB ;查表地址
MOVC A,@A+DPTR ;根据A的值查表
MOV P2,#0FEH ;开启位码=个位
MOV P0,A ;送个位数据
CALL DELAY ;延时一会,保持亮度
MOV A,R0 ;R0送入A中、
MOV DPTR,#TAB ;
MOVC A,@A+DPTR ;
MOV P2,#0FDH ;开启位码=十位
MOV P0,A ;送个位数据
CALL DELAY ;
RET
;采用定时器每秒数码管加1
TIME:
PUSH PSW ;状态寄存器压入堆栈
PUSH ACC ;累加器A压入堆栈
MOV TH0,#3CH ;重装50MS定时器初值
MOV TL0,#0B0H ;
INC COUNT ;50MS时间到寄存器加1
MOV A,COUNT ;送入A中
CJNE A,#20,UENRET ;比较不等于20,即1秒时间没到
MOV COUNT,#00H ;到了1秒时间,寄存器清规
INC CNT ;CNT寄存器加1
MOV A,CNT ;送入A中
CJNE A,#100,UENRET ;比较=这里因为只有两位数码管
MOV CNT,#00H ;意思跟上面20 的一样,
UENRET:POP ACC ;弹出A保护的值
POP PSW ;弹出状态寄寄原值
RETI ;中断返回
;外总中断复位
INT00:
PUSH PSW
PUSH ACC
MOV COUNT,#00H;清COUNT寄存器
MOV CNT,#00H;清CNT寄存器
CALL DELAY
POP ACC ;弹出保护数据
POP PSW
RETI
DELAY: MOV R5,#100 ;延时程序
DJNZ R5,$
RET
;共阴数据
TAB: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
END
绛旓細MOVCA,@A+DPTR;鏍规嵁A鐨勫兼煡琛 MOVP2,#0FEH;寮鍚綅鐮侊紳涓綅 MOVP0,A;閫佷釜浣嶆暟鎹 CALLDELAY;寤舵椂涓浼氾紝淇濇寔浜害 MOVA,R0;R0閫佸叆A涓丮OVDPTR,#TAB;MOVCA,@A+DPTR;MOVP2,#0FDH;寮鍚綅鐮侊紳鍗佷綅 MOVP0,A;閫佷釜浣嶆暟鎹 CALLDELAY;RET ;閲囩敤瀹氭椂鍣ㄦ瘡绉鏁扮爜绠鍔1 TIME:PUSHPSW;鐘舵佸瘎瀛樺櫒鍘嬪叆鍫...
绛旓細濡傛ゼ涓婃墍璇达紝浣犳病鏈夊垵濮嬪寲num杩欎釜鍙傛暟锛岄偅涔堥粯璁ゅ煎氨鏄0锛屼篃鐩稿綋浜256锛屾墍浠ヤ竴寮濮嬭繘鍏ヤ腑鏂氨鏄256-1锛屼篃灏辨槸255锛屼釜浣嶆槸5锛屽崄浣嶆暟鏄25锛屾墍浠ユ樉绀哄氨鎴愪簡浣犵幇鍦ㄧ殑妯℃牱銆傚洜姝ゅ垵濮嬪寲浠ヤ笅灏卞ソ浜嗐
绛旓細鍙互灏嗘寜閿缃湪澶栭儴涓柇涓婏紝涓柇涓搴斿瘎瀛樺櫒鍔犱竴锛屽嵆鍙
绛旓細MOV P0,A SETB P2.1 LCALL DELAY CLR P2.1 MOV A,21H ;涓綅鏄剧ず MOVC A,@A+DPTR MOV P0,A SETB P2.0 LCALL DELAY CLRP2.0 RET DELAY: ;璇樊 0us MOV R6,#10 DL0:MOV R5,#50 DJNZ R5,DJNZ R6,DL0 RET TABLE: DB 0C0H,0F9H,0A4H,0B0H,99H ;鍏遍槼鏋...
绛旓細JMP $-2 D0: MOV R0,#31H MOV R2,#11111110B MOV DPTR,#TAB D1: ORL P1,#00111111B MOV A,@R0 MOVC A,@A+DPTR MOV R3,#8 D2: RLC A MOV P3.2,C SETB P3.3 CLR P3.3 DJNZ R3,D2 INC R0 MOV A,R2 ANL P1,A...
绛旓細mov a,#01010101b tiao:mov p1,a call delay rr a jmp tiao delay:mov r7,#100 d1: mov r6,#100 d2: mov r5,#100 djnz r5 djnz r6,d2 djnz r7,d1 ret end P1鎺ED鈥斺斿啀鎺ョ數闃烩斺斿啀鎺nd鎴杤cc 濂介暱鏃堕棿娌$帺浜嗭紝鍑戝悎鐫鐪嬪惂銆傚叾瀹烇紝51姹囩紪璇█缃戜笂寰堝ソ鎵撅紝涔熷緢濂藉銆傘傘
绛旓細涓ゅ彧鏁扮爜绠娈电爜鍒嗗埆鐢盤0,P2杈撳嚭鎺у埗锛孭0鏄崄浣嶏紝P2鏄釜浣嶃侾3.2,P3.4鍒嗗埆鎺ヤ袱鍙寜閿紝P32.娓0锛孭3.4璁℃暟銆備互涓婄▼搴忔潵鑷鍗曠墖鏈C璇█绋嬪簭璁捐瀹炶100渚--鍩轰簬8051+Proteus浠跨湡銆媔nclude <reg52.h> define uchar unsigned char define uint unsigned int uchar DSY_CODE[]= { 0x3f,0x06,0x5b...
绛旓細涓ゅ彧鏁扮爜绠娈电爜鍒嗗埆鐢盤0,P2杈撳嚭鎺у埗锛孭0鏄崄浣嶏紝P2鏄釜浣嶃侾3.2,P3.4鍒嗗埆鎺ヤ袱鍙寜閿紝P32.娓0锛孭3.4璁℃暟銆備互涓婄▼搴忔潵鑷鍗曠墖鏈C璇█绋嬪簭璁捐瀹炶100渚嬧斺斿熀浜8051+Proteus浠跨湡銆媔nclude <reg52.h> define uchar unsigned char define uint unsigned int uchar DSY_CODE[]= { 0x3f,0x06,0x...
绛旓細P0 P2鏄暟鐮佺閫佹樉绀虹殑鏁版嵁,褰撶劧杩涓鏁扮爜绠′竴涓樉绀轰釜浣,涓涓樉绀哄崄浣,閭d箞浣犺瀵规樉绀虹殑鏁版嵁杩涜澶勭悊涓涓,姣斿鏄鏄剧ず99: uint a,b; uint k=99; a=99/10;//杩欓噷鍙彇鍗佷綅鑰屽凡,涔熷氨鏄9 b=99%10//杩欐槸姹傛ā,鐩稿綋浜庢暟瀛﹂噷璇寸殑鍙栦綑鏁 鐒跺悗鍐嶅皢杩檃鍜宐鐨勬暟鎹寚鍚戜竴涓暟鐮佺鏄剧ず鐨勪唬鐮佹暟缁刐寮勬竻鏁扮爜绠...
绛旓細include <intrins.h> define uchar unsigned char define uint unsigned int define seg P0 define sw P2 int tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};int dis[]={0,0};uint X;uchar Count=0;uchar sec=60;void display(){ int a;int m=0x01;dis[0]=sec...