单片机汇编语言100例(用汇编语言写一个单片机定时器/计数器的程序)

本文目录
- 用汇编语言写一个单片机定时器/计数器的程序
- 几道单片机编程题目,汇编语言
- 编程题(单片机)汇编语言
- 怎样用AT89S51单片机的汇编语言编写1到100的和
- 用单片机的汇编语言编写一个(十秒秒表 的编程)
- 急求!单片机汇编语言写程序:
- 单片机编程 请使用汇编语言编程 不要C语言 最好有注释 感谢!
用汇编语言写一个单片机定时器/计数器的程序
1.以查询方式工作,每计满100个脉冲,则取反P1.0口线状态。
ORG 0000H
MOV TMOD, #06H
MOV TH0, #156
MOV TL0, #156
SETB TR0
LP: JNB TF0, LP
CPL P1.0
SJMP LP
END
2.以中断方式工作,每计满200个脉冲,则取反P1.0口线状态。
ORG 0000H
SJMP START
ORG 000BH
CPL P1.0
RETI
START:
MOV TMOD, #06H
MOV TH0, #56
MOV TL0, #56
SETB TR0
MOV IE, #82H
SJMP $
END
几道单片机编程题目,汇编语言
好吧,给你写几个,一次问题的太多了。
1:
PRG1:
MOV DPTR,#2000H
MOV R2,#32
MOV B,#0
LP:
MOVX A,@DPTR
CJNE A,B,LP1
LP1:
JC,LP2
MOV B,A
LP2:
INC DPTR
DJNZ R2,LP
MOV 68H,A
RET
2:
PRG2:
MOV DPTR,#2000H
MOV R2,#0
MOV 6FH,#0
LP:
MOVX A,@DPTR
CJNE A,#41H,LP1 ;’A’=41H
INC 6FH
LP1:
INC DPTR
DJNZ R2,LP
RET
3:;这题不好理解,短整数应该是16位,但按你的描述,是存不下的,所以按有符号字符型数处理
PRG3:
MOV DPTR,#1000H
MOV R2,#30
MOV R0,#30H
MOV R1,#40H
LP:
MOVX A,@DPTR
JB ACC.7,LPF
MOV @R1,A
INC R1
INC DPTR
SJMP LP1
LPF:
MOV @R0,A
INC R0
INC DPTR
LP1:
DJNZ R2,LP
RET
;就写这几个吧,后面的程序,程序量太大,就不写了。
编程题(单片机)汇编语言
利用定时器中断实现的任务,请编译一下,若有问题欢迎追问。
OORG 0000H
SJMP MAIN;跳转到主程序
ORG 001BH
AJMP Timer1_Interrupt;跳转到定时计数器T1中断子程序
MAIN: CLR P1.2;清P1.2
MOV TMOD,#50H;配置T1为外部16位计数
MOV TH1,#0FE;配置T1寄存器外部计数500个脉冲初值
MOV TH0,#0CH
SETB ET1;使能T1中断
SETB TR1;使能T1计数
SETB EA;开全局中断
JB A8H.3,$;等待中断寄存器IE的ET1位清0
MOV TMOD,#10H;;配置T1为10ms定时器
MOV TH1,#0D8H;配置T1寄存器10ms定时计数初值,按12MHz频率计算出来的
MOV TL1,#0F0H
SETB P1.2;置位P1.2,10ms正脉冲上升沿
SETB ET1;使能T1中断
SETB TR1;使能T1计数
LOOP: JB A8H.3,LOOP;等待10ms
AJMP MAIN;返回开始处继续下一轮500个脉冲计数
Timer1_Interrupt:;T1中断子程序
CLR ET1;禁止T1中断
CLR TR0;禁止T1计数
RETI;中断返回
怎样用AT89S51单片机的汇编语言编写1到100的和
用循环指令就可以实现了,程序如下:
SUM:
MOV R2,#100
MOV R3,#0 ;结果存入R4R3
MOV R4,#0
LOOP:
MOV A,R2 ;R2从100到1逐步送入
CLR C
ADD A,R3 ;低八位直接加
MOV R3,A
CLR A
ADDC A,R4 ;高八位带进位加
MOV R4,A
DJNZ R2,LOOP
RET
用单片机的汇编语言编写一个(十秒秒表 的编程)
这是一个秒表,有按键实现 启动、暂停核清零功能。
#include 《reg51.H》
sbit P3_5 =P3^5;
unsigned char code dispcode={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0x00};
unsigned char second;
unsigned char keycnt;
unsigned int tcnt;
void main(void)
{
unsigned char i,j;
TMOD=0x02;
ET0=1;
EA=1;
second=0;
P1=dispcode;
P2=dispcode;
while(1)
{
if(P3_5==0)
{
for(i=20;i》0;i--)
for(j=248;j》0;j--);
if(P3_5==0)
{
keycnt++;
switch(keycnt)
{
case 1:
TH0=0x06;
TL0=0x06;
TR0=1;
break;
case 2:
TR0=0;
break;
case 3:
keycnt=0;
second=0;
P1=dispcode;
P2=dispcode;
break;
}
while(P3_5==0);
}
}
}
}
void t0(void) interrupt 1 using 0
{
tcnt++;
if(tcnt==4000)
{
tcnt=0;
second++;
if(second==100)
{
second=0;
}
P1=dispcode;
P2=dispcode;
}
}
急求!单片机汇编语言写程序:
;本程序晶振为12MHZ
SW BIT p0.0;存放按键值
CNT EQU 30H;存放1s计数值
DATE EQU 31H;存放数据值
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:MOV TMOD,#01H;定时器为T0工作方式1
MOV TH0,#3CH ;定时50ms
MOV TL0,#0B0H
MOV CNT,#20;1s初值
MOV DATE,#00H;数据初始值为0
SETB TR0
MLOOP: JNB TF0,$ ;50ms?
CLR TF0
MOV TH0,#0F0H;50mS定时重设
MOV TL0,#60H
SETB SW;读I/O口之前先写1
JNB SW,ML01;判断按键
DJNZ CNT,ML02;1s到了没?
MOV CNT,#20
INC DATE;数据值加1
ML01:MOV DATE,#00H;数据值清零
ML02:MOV A,DATE
MOV DPTR,#LED7;差数码管显示码
MOVC A,@A+DPTR
MOV P1,A;七段码值送显示
AJMP MLOOP
;====LED段码表====
LED7:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,86H,0A1H,86H,8EH
END
流程图为:
希望可以帮助你。
单片机编程 请使用汇编语言编程 不要C语言 最好有注释 感谢!
先做个记号,一会再回答你。把这句补充一下“每隔0.5秒交替发亮几次”。是每0.5S就交换点亮,几次之后熄灭;还是在0.5S内,其中一组闪烁几次,过0.5S另一组再闪烁?

更多文章:
amaze ui 树状结构导航(网站结构怎么做SEO,树状结构与扁平结构的区别)
2026年4月15日 09:00
jquery多级联动下拉菜单(jQuery实现动态级联选择问题,比如3个下拉框,选择第一个其他的2个选项自动把内容选中.)
2025年9月15日 16:15
vue页面之间回调(vue.http 怎么定义jsonp的回调名)
2026年7月27日 06:30
a和b的ascii码(英文字母A的ASCII码值十进制的是65,那么B的ASCII码是什么)
2026年1月28日 12:30
学51单片机编程选用Keil uvision 和medwin哪个软件更好?为什么没有国产的C/C++的编译器
2025年10月8日 05:45
用fprintf为什么写不进文件(急求C语言大神,下面的程序运行正常也能读取文件,但是无法向文件中写入,问题出在哪)
2025年11月22日 18:45
登陆界面背景图(Win7登录界面背景图在哪里改(输入密码那))
2026年7月27日 18:00
我的世界displayname(minecraft我的世界怎样给物品改名)
2026年1月14日 14:45
shell脚本写加减乘除运算(用shell做个加减乘除运算)
2025年6月20日 21:30
sql语句查询男女生人数(SQL查询,按性别显示学生信息,并分别汇总男生女生人数)
2026年7月25日 08:00












