⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 io.s

📁 一个关于AVR单片机的例程
💻 S
字号:
	.module io.c
	.area text(rom, con, rel)
	.dbfile E:\avr\2.1.5\io.c
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 8
; // 用途:理解AVR的端口操作,学习在AVR studio里面观查IO口状态
; // 连接:电源跳线,PB0接一个按键,PA口0~7接7段数码管的a~dp,7段数码管的ABCD接VCC
; // 注意:直接全速运行本程序,没有现实意义,请通过JTAG在线仿真,看各个IO口的状态,并且看数码管上的显示。
; 
; #include <iom16v.h>
; 
; void main(void)
; {
	.dbline 9
;  PORTA=0xff;
	ldi R24,255
	out 0x1b,R24
	.dbline 10
;  DDRA=0xff; //输出 模式 ,IO口上,1为输出,0为输入。
	out 0x1a,R24
	xjmp L3
L2:
	.dbline 13
;  
;  while(1)
;  {
	.dbline 14
;   PORTA = 0xf0; //等于 结果是:1111 0000
	ldi R24,240
	out 0x1b,R24
	.dbline 15
;   PORTA &=~ 0xf0; //清零 结果是:0000 0000
	in R24,0x1b
	andi R24,15
	out 0x1b,R24
	.dbline 16
;   PORTA |= 0x77; //置一 结果是:0111 0111
	in R24,0x1b
	ori R24,119
	out 0x1b,R24
	.dbline 17
;   PORTA ^= 0x70; //翻转 结果是:0000 0111
	ldi R24,112
	in R2,0x1b
	eor R2,R24
	out 0x1b,R2
	.dbline 18
;   PORTA = 0x00; //全部清零
	clr R2
	out 0x1b,R2
	.dbline 21
;  
;   //下面理解下移位算法
;   PORTA |=(1<<PA7); //PA7置1,结果是 1000 0000
	sbi 0x1b,7
	.dbline 22
;   PORTA = ((1<<PA4)|(1<<PA5)|(1<<PA6)); // PA4 5 6置一,结果为 0011 1000
	out 0x1b,R24
	.dbline 23
;   PORTA &=~((1<<PA4)|(1<<PA5));       //PA 4 5 清零, 结果为 0010 0000
	in R24,0x1b
	andi R24,207
	out 0x1b,R24
	.dbline 24
;   PORTA ^= ((1<<PA5)|(1<<PA6));       //PA5 PA6 取反,结果为 0001 0000
	ldi R24,96
	in R2,0x1b
	eor R2,R24
	out 0x1b,R2
	.dbline 27
;   
;   //下面理解下输入
;   DDRB=0x01; //PB0 接个按键
	ldi R24,1
	out 0x17,R24
	.dbline 28
;   if((PINB&0x01)==0x01) 
	in R24,0x16
	andi R24,1
	cpi R24,1
	brne L5
	.dbline 29
;    { //PB0为高,没有键盘按下
	.dbline 30
;     PORTA =0x00;
	clr R2
	out 0x1b,R2
	.dbline 31
;    }
	xjmp L6
L5:
	.dbline 33
;    else
;    { //PB0为低,按键按下
	.dbline 34
;     PORTA =0xFF;
	ldi R24,255
	out 0x1b,R24
	.dbline 35
;    }
L6:
	.dbline 36
L3:
	.dbline 12
	xjmp L2
X0:
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -