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

📄 fan0327.asm

📁 一款可实现小风扇转动时通过风叶上的LED改变风叶显示图像的ASM程序。如果需要更详细的
💻 ASM
📖 第 1 页 / 共 3 页
字号:
#include ht48r30a-1.inc
data	.section	'data'

IR_INPUT	EQU	PA7

SHOW_NUM	DB	?

SUBBAS		DB	?

PIC_NUMBER  DB  ?

IR_CON		DB	?

DEL_MID		DB	?
DEL_SUB		DB	?
DEL_COU1	DB	?
DEL_COU2	DB	?
IMAGE_ADD   DB  ?
IR_FLAG     DB  ?

led_col		db	?

data		db	?

PIC_SEL		db	?

code	.section	at	0	'code'

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org		000h

jmp		start


;--------------------------------
;|          INTC                |
;--------------------------------
;| 7  6   5   4   3   2   1   0 |
;| -  -  TF  EIF  -  ETI EEI EMI|
;--------------------------------
;**************************************
;-----------------------------------
;|          TMRC                   |
;-----------------------------------
;| 7   6   5   4   3   2   1     0 |
;|TM1 TM0  -  TON TE PSC2 PSC1 PSC0|
;-----------------------------------

org		004h

reti

org		008h

reti

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
org		020h
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start:

CLR		PAC				;PA,PB,PG为输出模式
CLR		PBC
CLR		PGC		
SET     PCC             ;PC为输入模式

SET		PA				;所有LED全熄灭
SET		PB
SET		PG

SET		PAC.7			;PAC.7为输入模式,以使PA7检测“0”位

CLR     IR_FLAG         ;IR_FLAG 为 0 表示还没检测到 IR , IR 还起作用

MOV		A,048H          ;单个LED初始延迟时间   72
MOV		DEL_SUB,A

MOV     A,01H
MOV     PIC_NUMBER,A

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;IMAGE1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOV		A,0AFH			;设定每个图片显示时间      175
MOV		SHOW_NUM,A

MOV		A,DEL_SUB
MOV		DEL_MID,A

SHOW_PIC1:

MOV		A,0B4H                 ;180个数据
MOV		LED_COL,A

SHOW1:

MOV		A,DATA1
MOV		TBLP,A

SZ      IR_FLAG           ;如果 IR_FLAG 为 0 检测 IR
JMP     PIC1_LOOP         ;为 1 跳过
CALL	IR_DETECT         ;找“0”位,并将 IR_FLAG 置为 1;

PIC1_LOOP:

CALL	IMAGE1

CALL	SHOW_LED_H

DEC		led_col
inc		tblp

CALL	IMAGE1

CALL	SHOW_LED_L

DEC		led_col
inc		tblp

CALL	DELAY

SNZ		IR_INPUT         ;IR 为 1 时跳转
JMP     IR_DEC0          ;
JMP     IR_DEC1
IR_DEC0:                 ;IR 为 0
SZ      IR_FLAG          ;如果 IR_FLAG 为 0 跳转
JMP     IR_DEC2          ;IR_FLAG 为 1,且 IR 为 0 ,不执行
CALL	START_ZERO       ;如IR_FLAG 为 0,重开始

IR_DEC1:
CLR     IR_FLAG          ;IR_FLAG 为 1,且 IR 为 1 ,将IR_FLAG 置 0

IR_DEC2:

SZ		led_col

jmp		PIC1_LOOP

SZ		IR_INPUT
JMP		IR_1
JMP		IR_0
IR_1:
INC		DEL_SUB
MOV		A,DEL_SUB
MOV		DEL_MID,A
IR_0:
SDZ		SHOW_NUM
JMP		SHOW_PIC1

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;IMAGE2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOV		A,0AFH			;设定每个图片显示时间
MOV		SHOW_NUM,A

SHOW_PIC2:

MOV		A,0B4H
MOV		LED_COL,A

MOV		A,DATA2
MOV		TBLP,A

CALL	IR_DETECT

PIC2_LOOP:

CALL	IMAGE2

CALL	SHOW_LED_H

inc		tblp
DEC		led_col

CALL	IMAGE2

CALL	SHOW_LED_L

inc		tblp
DEC		led_col

CALL	DELAY

SNZ		IR_INPUT
JMP		PIC2_OVER

SZ		LED_COL

jmp		PIC2_LOOP

PIC2_OVER:

SET		PA
SET		PB
SET		PG

SDZ		SHOW_NUM
JMP		SHOW_PIC2

MOV		A,0AFH			;设定每个图片显示时间
MOV		SHOW_NUM,A
JMP		SHOW_PIC1







START_ZERO:

SET		PA
SET		PB
SET		PG

SZ		led_col
DEC		DEL_SUB
MOV		A,DEL_SUB
MOV		DEL_MID,A

CLR		LED_COL
RET





;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
IR_DETECT:
SZ		IR_INPUT

JMP		IR_DETECT

SET     IR_FLAG        ;IR 检测到后,将 IR_FLAG 置 1,在 IR 变为 1 前不起作用

;IR_WAIR:
;SNZ		IR_INPUT
;JMP		IR_WAIR

RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;







;;;;;;;;;;;;;;;;;;;;DELAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DELAY:
MOV		A,001H
MOV		DEL_COU1,A
DEL_LOOP:
MOV		A,DEL_MID
MOV		DEL_COU2,A
DEL_LOOP1:
SDZ		DEL_COU2
JMP		DEL_LOOP1
SDZ		DEL_COU1
JMP		DEL_LOOP

SET		PA
SET		PB
SET		PG

RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;SHOW_LED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
SHOW_LED_H:
CLR		SUBBAS				;从DATA AREA中取图形数据
MOV		SUBBAS,A
CPL		SUBBAS

SNZ		SUBBAS.7
CLR		PG0
SNZ		SUBBAS.6
CLR		PA6
SNZ		SUBBAS.5
CLR		PA5
SNZ		SUBBAS.4
CLR		PA4
SNZ		SUBBAS.3
CLR		PB7
SNZ		SUBBAS.2
CLR		PB6
SNZ		SUBBAS.1
CLR		PB5
SNZ		SUBBAS.0
CLR		PB4
RET
;--------------------------------------------
SHOW_LED_L:
CLR		SUBBAS				;从DATA AREA中取图形数据
MOV		SUBBAS,A
CPL		SUBBAS

SNZ		SUBBAS.7
CLR		PA3
SNZ		SUBBAS.6
CLR		PA2
SNZ		SUBBAS.5
CLR		PA1
SNZ		SUBBAS.4
CLR		PA0
SNZ		SUBBAS.3
CLR		PB3
SNZ		SUBBAS.2
CLR		PB2
SNZ		SUBBAS.1
CLR		PB1
SNZ		SUBBAS.0
CLR		PB0
RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;----data area----;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG		0100H
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
DATA1:

; 0
	ret	a,11111111B; 1
	ret	a,11111110B; 2
	ret	a,11111111B; 3
	ret	a,11111110B; 4
	ret	a,11111111B; 5
	ret	a,11111110B; 6
	ret	a,01100000B; 7
	ret	a,11111110B; 8
	ret	a,00000000B; 9
	ret	a,11100110B; 10
	ret	a,00000000B; 11
	ret	a,11000010B; 12
	ret	a,00000000B; 13
	ret	a,11000010B; 14
	ret	a,00000000B; 15
	ret	a,11000010B; 16
	ret	a,00000001B; 17
	ret	a,10000010B; 18
	ret	a,00000001B; 19
	ret	a,10000010B; 20
	ret	a,00000001B; 21
	ret	a,10000010B; 22
	ret	a,00000001B; 23
	ret	a,10000010B; 24
	ret	a,00000011B; 25
	ret	a,00000010B; 26
	ret	a,00000011B; 27
	ret	a,00000010B; 28
	ret	a,00000011B; 29
	ret	a,00000010B; 30


	ret	a,00000011B; 31
	ret	a,00000010B; 32
	ret	a,00000011B; 33
	ret	a,00000010B; 34
	ret	a,00000011B; 35
	ret	a,00000010B; 36
	ret	a,00000011B; 37
	ret	a,00000010B; 38
	ret	a,00000011B; 39
	ret	a,00000010B; 40
	ret	a,00000111B; 41
	ret	a,00000010B; 42
	ret	a,00000111B; 43
	ret	a,00000010B; 44
	ret	a,00000111B; 45
	ret	a,00000010B; 46
	ret	a,00001110B; 47
	ret	a,00000010B; 48
	ret	a,00000111B; 49
	ret	a,00000010B; 50
	ret	a,00000111B; 51
	ret	a,00000010B; 52
	ret	a,00000111B; 53
	ret	a,00000010B; 54
	ret	a,00000011B; 55
	ret	a,00000010B; 56
	ret	a,00000011B; 57
	ret	a,00000010B; 58
	ret	a,00000011B; 59
	ret	a,00000010B; 60
	ret	a,00000011B; 61
	ret	a,00000010B; 62
	ret	a,00000011B; 63
	ret	a,00000010B; 64
	ret	a,00000011B; 65
	ret	a,00000010B; 66
	ret	a,00110011B; 67
	ret	a,10000110B; 68
	ret	a,01111111B; 69
	ret	a,11111110B; 70
	ret	a,00111111B; 71
	ret	a,11111110B; 72
	ret	a,00111111B; 73
	ret	a,11111110B; 74
	ret	a,01111111B; 75
	ret	a,11111110B; 76
	ret	a,00110011B; 77
	ret	a,11111110B; 78
	ret	a,00000011B; 79
	ret	a,11111110B; 80



	ret	a,00000001B; 81
	ret	a,00000110B; 82
	ret	a,00000001B; 83
	ret	a,10000110B; 84
	ret	a,00000011B; 85
	ret	a,10000110B; 86
	ret	a,00000011B; 87
	ret	a,00000110B; 88
	ret	a,00000111B; 89
	ret	a,00000110B; 90
	ret	a,00001111B; 91
	ret	a,00000110B; 92
	ret	a,00001111B; 93
	ret	a,00000110B; 94
	ret	a,00000111B; 95
	ret	a,00000110B; 96
	ret	a,00000011B; 97
	ret	a,00000110B; 98
	ret	a,00000011B; 99
	ret	a,10000110B; 100
	ret	a,00000001B; 101
	ret	a,10000110B; 102
	ret	a,00000001B; 103
	ret	a,00000110B; 104
	ret	a,00000011B; 105
	ret	a,11111100B; 106
	ret	a,00110011B; 107
	ret	a,11111110B; 108
	ret	a,01111011B; 109
	ret	a,11111100B; 110
	ret	a,00111111B; 111
	ret	a,11111110B; 112
	ret	a,00111111B; 113
	ret	a,11111110B; 114
	ret	a,01111111B; 115
	ret	a,11111100B; 116
	ret	a,00110011B; 117
	ret	a,10000100B; 118
	ret	a,00000011B; 119
	ret	a,00000010B; 120
	ret	a,00000011B; 121
	ret	a,00000010B; 122
	ret	a,00000011B; 123
	ret	a,00000000B; 124
	ret	a,00000011B; 125
	ret	a,00000010B; 126
	ret	a,00000011B; 127
	ret	a,00000010B; 128
	ret	a,00000011B; 129
	ret	a,00000010B; 130
	ret	a,00000111B; 131
	ret	a,00000000B; 132
	ret	a,00000111B; 133
	ret	a,00000010B; 134
	ret	a,00000110B; 135
	ret	a,00000000B; 136
	ret	a,00000000B; 137
	ret	a,00110010B; 138
	ret	a,00001111B; 139
	ret	a,11010010B; 140
	ret	a,00000111B; 141
	ret	a,11110000B; 142
	ret	a,00000111B; 143
	ret	a,11110000B; 144
	ret	a,00000011B; 145
	ret	a,11110010B; 146
	ret	a,00000011B; 147
	ret	a,01110010B; 148
	ret	a,00000011B; 149
	ret	a,00110010B; 150
	ret	a,00000011B; 151
	ret	a,00010010B; 152
	ret	a,00000011B; 153
	ret	a,00000000B; 154
	ret	a,00000011B; 155
	ret	a,00000010B; 156
	ret	a,00000011B; 157
	ret	a,00000010B; 158
	ret	a,00000011B; 159
	ret	a,00000000B; 160
	ret	a,00000001B; 161
	ret	a,10000010B; 162
	ret	a,00000001B; 163
	ret	a,10000000B; 164
	ret	a,00000001B; 165
	ret	a,10000010B; 166
	ret	a,00000001B; 167
	ret	a,10000000B; 168

⌨️ 快捷键说明

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