问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

请教:ATmega系列 单片机编程语言

发布网友 发布时间:2022-04-25 02:57

我来回答

3个回答

热心网友 时间:2023-10-22 09:08

;************;
;小灯控制程序;
;************;
;
;************;
;中断入口程序;
;************;
;
ORG 0000H ;程序执行开始地址
LJMP START ;跳至START执行
ORG 0003H ;外中断0中断入口地址
RETI ;中断返回(不开中断)
ORG 000BH ;定时器T0中断入口地址
RETI ;中断返回(不开中断)
ORG 0013H ;外中断1中断入口地址
RETI ;中断返回(不开中断)
ORG 001BH ;定时器T1中断入口地址
RETI ;中断返回(不开中断)
ORG 0023H ;串行口中断入口地址
RETI ;中断返回(不开中断)
;
;************;
; 初始化程序 ;
;************;
;
CLEAR: MOV 20H,#00H ;20H单元内存清0(闪烁标志清0)
SETB 00H ;20H.0位置1(上电时自动执行闪烁功能1)
RET ;子程序返回
;
;************;
; 主 程 序 ;
;************;
;
START:ACALL CLEAR ;调用初始化子程序
MAIN: LCALL KEYWORK ;调用键扫描子程序
JB 00H,FUN0 ;20H.0位为1时执行FUN0
JB 01H,FUN1 ;20H.1位为1时执行FUN1
JB 02H,FUN2 ;20H.2位为1时执行FUN2
JB 03H,MAIN ;备用
AJMP MAIN ;返回主程序MAIN
;
;************;
; 功能程序 ;
;************;
;第1种闪烁功能程序
FUN0: MOV A,#0FEH ;累加器赋初值
FUN00:MOV P1,A ;累加器值送至P1口
LCALL DL05S ;延时
JNB ACC.7,MAIN ;累加器最高位为0时转MAIN
RL A ;累加器A中数据循环左移1位
AJMP FUN00 ;转FUN00循环
;
;第2种闪烁功能程序
FUN1:MOV A,#0FEH ;累加器赋初值
FUN11:MOV P1,A ;累加器值送至P1口
LCALL DL05S ;延时
JZ MAIN ;A为0转MAIN
RL A ;累加器A中数据循环左移1位
ANL A,P1 ;A同P1口值相与
AJMP FUN11 ;转FUN11循环
;
; 第3种闪烁功能程序
FUN2:MOV A,#0AAH ;累加器赋初值
MOV P1,A ;累加器值送至P1口
LCALL DL05S ;延时
CPL A ;A中各位取反
MOV P1,A ;累加器值送至P1口
LCALL DL05S ;延时
AJMP MAIN ;转MAIN
;************;
; 扫键程序 ;
;************;
;
KEYWORK:MOV P3,#0FFH ;置P3口为输入状态
JNB P3.0,KEY0 ;读P3.0口,若为0转KEY0
JNB P3.1,KEY1 ;读P3.1口,若为0转KEY1
JNB P3.2,KEY2 ;读P3.2口,若为0转KEY2
JNB P3.3,KEY3 ;读P3.3口,若为0转KEY3
RET ;子程序返回
;
;闪烁功能0键处理程序
KEY0:LCALL DL10MS ;延时10毫秒消抖
JB P3.0,OUT0 ;P3.0为1,子程序返回(干扰)
SETB 00H ;20H.0位置1(执行闪烁功能1标志)
CLR 01H ;20H.1位清0
CLR 02H ;20H.2位清0
CLR 03H ;20H.3位清0
OUT0:RET ;子程序返回
;
; 闪烁功能1键处理程序
KEY1:LCALL DL10MS
JB P3.1,OUT1
SETB 01H ;20H.1位置1(执行闪烁功能2标志)
CLR 00H
CLR 02H
CLR 03H
OUT1:RET
;
;闪烁功能2键处理程序
KEY2:LCALL DL10MS
JB P3.2,OUT2
SETB 02H ;20H.2位置1(执行闪烁功能3标志)
CLR 01H
CLR 00H
CLR 03H
OUT2:RET
;
;闪烁功能(备用)键处理程序
KEY3:LCALL DL10MS
JB P3.3,OUT3
SETB 03H ;20H.3位置1(执行备用闪烁功能标志)
CLR 01H
CLR 02H
CLR 00H
OUT3:RET
;
;************;
; 延时程序 ;
;************;
;0.5毫秒延时子程序,执行一次时间为513微秒
DL512:MOV R2,#0FFH
LOOP1: DJNZ R2,LOOP1
RET
;
;10毫秒延时子程序(调用20次0.5毫秒延时子程序)
DL10MS:MOV R3,#14H
LOOP2: LCALL DL512
DJNZ R3,LOOP2
RET
;
;延时子程序,改变R4寄存器初值可改变闪烁的快慢(时间为15×25毫秒)
DL05S:MOV R4,#0FH
LOOP3: LCALL DL25MS
DJNZ R4,LOOP3
RET
;
;25毫秒延时子程序,用调用扫键子程序延时,可快速读出功能按键值
DL25MS:MOV R5,#0FFH
LOOP4:LCALL KEYWORK
DJNZ R5,LOOP4
RET
END ;程序结束

热心网友 时间:2023-10-22 09:08

所有AVR单片机的基本指令是相同的,只是针对不同的单片机会扩展一些指令,因此可以认为汇编指令都相同。对于AVR单片机的C语言程序,如果使用好的编译器,得到的代码不会太长,和用汇编写的效果相当。因此在AVR中使用汇编和C的差别不大。

PS:可以实验一下Code Version AVR C。

热心网友 时间:2023-10-22 09:09

C语言简单,像MEGA16,MAGE128什么的,移植更容易。
所以建议你用C。以后学别的单片机入门也容易些。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 观看保研经验交流会后的总结1000字 ATmega单片机 有没有考研狗分享心得 Atmega与ATMEL是什么关系? ATmega怎么发音 四个月从零开始能考上研究生吗? ATMEGA是什么东西 一个专科生的考研梦想!!! 有关嫦娥的古诗 湖南青马在线微信小程序里心得体会怎么在手机上写? 嫦娥有关的诗句 有这方面的考研经验分享吗 嫦娥的古诗 有关嫦娥的著名诗句? 嫦娥诗句是什么? 古诗中描写嫦娥的诗句有哪些? 有嫦娥的诗句 带有嫦娥的诗句 有关于嫦娥的古诗都有哪些? 带嫦娥的诗句 enscape怎么调阴影大小 atmega 163和atmega 163l的区别 考研数学一如何复习 ATmega怎么读? enscape每次调整玻璃参数玻璃不见了 考研收心指南:如何提高你的紧迫感 atmega系列的单片机是不是用同一个软件编程?编程原理都一样吗?比如atmega16,atmega32u4等等。。 enscapce材质工具栏怎么显示全部 单片机 atmega32a-pu和atmega32-16au可以互换吗? enscape水面为什么这么蓝 Atmega328p-pu和Atmega16有什么区别? ATmega单片机中的中断INT0与PCINT0有什么区别? atmega 16单片机可以使用串口,并且可以使用软件烧录程序吗 AT89c51单片机与ATmega单片机的区别 enscape溢色怎么办 单片机中ATmega 128和AT89c51相比较有何优缺点 enscape地毯参数 atmega328p-pu和atmega328p-au有什么区别?哪个好 为什么enscape打开是全白 单片机主控芯片 ATmega8/ATmega48/ATmega88/ATmega168它的那个好一些?