⑴ 51单片机,怎么用汇编语言编程一个程序。实现4个按键控制4种报警声音(110、119、120、防空警报声)。
没有四种声音的频率库,其他的给你做个示范吧:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#11H
SETB EA
SETB ET0
SETB ET1
LOOP:
LCALL KEYSCAN
MOV A,R2
JNZ LP1
MOV DPTR,#TAB110
SJMP LPRUN
LP1:
DEC A
JNZ LP2
MOV DPTR,#TAB119
SJMP LPRUN
LP2:
DEC A
JNZ LP3
MOV DPTR,#TAB120
SJMP LPRUN
LP3:
DEC A
JNZ LP4
MOV DPTR,#TABBOMB
SJMP LPRUN
LP4:
LJMP LOOP
LPRUN:
MOVX A,@DPTR
MOV TL0,A
INC DPTR
MOVX A,@DPTR
MOV TH0,A
............;时长控制也可以做到表里,计算后赋值给T1
LJMP LOOP
END
⑵ 51单片机 汇编~ JNB F0,LOOP2;
我还把他复制到keil 里面看 以为很麻烦的事情了
看你最后问的 才懂你纠结啥
CLR F0;是把F0清零了
LOOP2:
JNB F0,LOOP2;
这句的话如果F0=0 则一直死循环 当时当F0=1的时候就会跳出,你去看对F0的操作 就只有定时中断里面了,直到F0=1才继续
意思就是等待定时器的定时间隔 再继续操作
用C来说 就是while(!F0) ; //这种实际中经常遇到的, 一个对变量的判断的死循环,而这个变量只在某个函数里面才改变 (汇编里面 定时处理就相当于C里面的定时处理函数) 直到...才...
ORG 0000H
START:
LJMP MAIN
ORG 000BH ;定时器0中断入口
LJMP TTCO ;调用定时器服务程序
ORG 0100H
MAIN:
MOV SP, #30H; 开辟栈底
SETB EA; 打开总中断
SETB ET0;
MOV A, #01;
MOV P1, A;
LOOP:
LCALL TTCO_1S;
RL A;
MOV P1, A;
LJMP LOOP;
ORG 2000H
TTCO: ;定时器0服务程序
MOV TH0, #3CH ;初始化
MOV TL0, #0B0H; 再次初始化定时时间
DJNZ R0, LOOP1;
SETB F0; 在这里F0发生变化F0=1
MOV R0, #10; 再次定循环次数
LOOP1: RETI
TTCO_1S:
MOV TMOD, #01H; 设置定时器为工作方式1
MOV R0, #10; 定循环次数
MOV TH0, #3CH; 初始化定时时间
MOV TL0, #0B0H
SETB TR0;
CLR F0;
LOOP2:
JNB F0,LOOP2;
RET
END
;还是怀念汇编啊 虽然不好移植 但是个个操作都会产生作用
⑶ 51鍗旷墖链烘眹缂栬瑷鎸夐敭鎺у埗鏁扮爜绠″姞1锷犲埌999
镐濊矾鏄瀵圭殑锛岀粏鑺傛弿杩版湁闂棰桡纴绠楀啿鎱庢硶鎻忚堪瑕佷弗璋ㄣ备负浠涔堣99镞舵竻闆跺晩锛屾暎𨰾嗘暚杩椤彲鑳藉氨鏄阌栾镄勫湴鏂逛简銆
绯荤粺鍒濆嫔寲镞讹纴娓呴櫎浣跨敤鍒扮殑瀵勫瓨鍣锛侊紒铹跺悗锛屽綋闇瑕佸姞1镞跺仛濡备笅锷ㄤ綔
瀵勫瓨鍣╝ = a+1
濡傛灉瀵勫瓨鍣╝ == 100锛寋瀵勫瓨鍣╞=b+1锛涘瘎瀛桦櫒a = 0}
杩欐牱灏卞彲寰″苟浠ヤ简锛宐涓镄1浠h〃100锛宎涓镄1灏辨槸1
⑷ 51单片机如何用汇编语言让4个共阴数码管同时显示1234 P3口是片选 P0是段选
在进行51单片机的编程时,利用汇编语言实现四个共阴数码管同时显示数字1234是一个有趣的实验。实验中,P3口被用作片选信号,而P0口则负责段选,即控制数码管的点亮状态。
要实现这一功能,可以使用proteus软件进行仿真。在proteus中,创建一个四位一体的共阴数码管模型,并将其连接到51单片机的P0和P3口。具体配置中,P3口的每个引脚分别连接到四个数码管的片选引脚,而P0口的引脚则对应控制数码管的段选信号。
接下来,编写汇编程序来实现显示功能。程序首先将数据1234分别送入四个数码管的显示缓冲区。然后通过循环切换数码管的片选信号,使每个数码管依次显示相应的数字。同时,P0口的输出数据也相应地更新,以确保显示正确的段选状态。
在proteus仿真过程中,可以通过观察数码管的显示效果来验证程序的正确性。当数码管依次显示1234时,说明程序已经成功实现了四个共阴数码管的同步显示功能。
整个实验不仅能够加深对51单片机和汇编语言的理解,还能锻炼编程和调试能力。通过实际操作,可以更好地掌握数码管显示技术在嵌入式系统中的应用。
在编写程序时,需要注意数码管的驱动方式和显示代码的编写。对于共阴数码管,通常需要将段选信号置高电平来点亮相应的段,而片选信号则用于选择需要显示的数码管。在程序中,可以通过合理的逻辑判断和循环结构来实现数码管的同步显示。
总之,利用51单片机和汇编语言实现四个共阴数码管同步显示1234,是一个既实用又有趣的实验项目。通过这样的实践,可以提高对硬件和软件的综合应用能力,为今后的嵌入式系统开发打下坚实的基础。