单片机上机试题
1.片内RAM 40H 、41H 单元中分别存放着两个8位二进数,要求取出两个单元中的低半字节合并成一个字节存放在42H 。(40H 的低半字节在高位上)
常用直接寻址方式:
ORG 0000H
START: MOV A,40H
ANL A,#0FH
SWAP A
MOV 42H,A
MOV A,41H
ANL A,#0FH
ORL 42H,A
SJMP $
END
采用间址:
ORG 0000H
START: MOV R1,#40H
MOV A,@R1
ANL A,#0FH
SW AP A
INC R1
XCH A,@R1
ANL A,#0FH
ORL A,@R1
INC R1
MOV @R1,A
SJMP $
END
使用变量:
? BUF EQU 40H
? ORG 0000H
? MOV R1, #BUF
? MOV A, @R1
? ANL A, #0FH
? SW AP A
? INC R1
? XCH A, @R1
? ANL A, #0FH
? ORL A, @R1
? INC R1
? MOV @R1, A
? SJMP $
? END
2. 编制程序使y 按下式赋值:
??
???<-=>=0,10,00,1x x x y
V AR EQU 30H
FUNC EQU 31H
START: MOV A,V AR JZ COMP
JNB ACC.7,POSI
MOV A,#0FFH
SJMP COMP
POSI: MOV A,#01H
COMP: MOV FUNC,A
SJMP $
END
3.求无符号数累加和。
?片内RAM从60H开始的连续8个单元数据之和,放在R3R4中
ORG 0000H
LJMP ADD1
ORG 0100H
ADD1: MOV R3,#00H
MOV R4,#00H
MOV R2,#8
MOV R0,#60H
LOOP: MOV A,R4
ADD A,@R0
MOV R4,A
CLR A
ADDC A,R3
MOV R3,A
INC R0
DJNZ R2,LOOP
SJMP $
END
4已知数据0~9的平方,设变量x的值在工作寄存器R0中,查表后求x2的值放回累加器,试编制程序。
ORG 0000H
MOV A,R0
MOV DPTR,#TABLE
MOVC A,@A+DPTR
SJMP $
TABLE:DB 00H,01H,04H,09H,16H,25H,36H,49H,64H,81H
END
5.用程序实现c=a2+b2。设a、b均小于10,a存在片内RAM31H单元中,b存在32H 单元中,把c存入33H单元中。
ORG 0000H
MOV SP,#60H
MOV A,31H
LCALL SQR
MOV R1,A
MOV A,32H
LCALL SQR
ADD A,R1
MOV 33H,A
L: SJMP L
;子程序
SQR: MOV DPTR,#TAB
MOVC A,@A+DPTR
RET
TAB: DB 0,1,4,9,16,25,36,49,64,81
END
6.P1.0~P1.3为输出口,P3.0~P3.3 为输入口,使LED灯显示开关的状态。
ORG 0000H
L1:MOV C, P3.0
MOV P1.0,C
MOV C, P3.1
MOV P1.1, C
MOV C, P3.2
MOV P1.2, C
MOV C, P3.3
MOV P1.3, C
SJMP L1
END
7.使用外部中断0,以P1口的8个LED灯显示外部中断次数。每中断一次,LED 指示灯显示按照二进制加1。同时,采用P3.4~P3.7控制4个LED灯进行“跑马灯” 循环显示,来模拟CPU执行主程序。
ORG 0000H
LJMP MAIN
ORG 0003H ;中断入口
LJMP INTN0
ORG 0030H
MAIN: MOV 30H, #00H ;计中断次数,开始清零
SETB EX0 ;允许INT0中断
SETB IT0 ;边沿触发方式
SETB EA ;开中断
MOV P1,#0FFH ;P1口指示灯初始状态
;----------模拟主程序-------------------------
LOOP1: MOV A, #0EFH
LOOP: MOV P3,A
LCALL DELAY ;延时0.25S
RL A
JB ACC.0, LOOP
SJMP LOOP1
;-------中断服务程序---------------------
INTN0: PUSH ACC ;保护现场
INC 30H ;中断次数加1
MOV A, 30H
CPL A
MOV P1,A ;点亮指示灯
POP ACC ;恢复现场
RETI ;中断返回
;-------------------------------------------------------------
DELAY: MOV R5,#04H ;延时子程序
DL1: MOV R6,#0
DL2: MOV R7,#0
DJNZ R7,$
DJNZ R6,DL2
DJNZ R5, DL1
RET
?8.P1口接有8个发光二极管,编程使8个指示灯轮流点亮,每个灯亮0.25s,单片机晶振为12MHz。
?分析:fosc=12MHz, 1M=1μs
?16位定时器最大定时时间:
?t=(216-初值) ×机器周期
?=(65536-0) ×1μs=65.5ms
?0.25s=5 ×50ms
?定时50ms初值:
?50 ×103=65536-初值;
?初值=15536=3CB0H
ORG 0000H
AJMP MAIN
ORG 000BH ;中断入口
AJMP INTT0
ORG 0030H ;主程序
MAIN:MOV 31H, #0FEH
MOV P1, 31H ;置第一个LED亮
MOV TMOD, #01H ;T0工作于定时方式1
MOV TH0, #3CH
MOV TL0, #0B0H ;定时50ms
SETB TR0 ;启动T1工作
SETB ET0 ;允许T1中断
SETB EA
MOV 30H,#00H ;软件计时单元
W AIT:SJMP W AIT ;等待中断
INTT0:MOV TH0,#3CH ;中断服务程序
MOV TL0,#0B0H ;重装计数初值
INC 30H ;计时单元加1
MOV A, 30H
CJNE A, #05H, L1 ;0.25S到?
MOV 30H, #00H ;计时单元清0
MOV A, 31H
RL A ; 左移一位
MOV 31H, A
MOV P1, A ;下一个发光二极管亮
L1:RETI ;中断返回
?9.P1口接有8个发光二极管,使用T1作为计数器,计外部脉冲的个数,每计3个脉冲产生中断,利用LED指示灯显示中断的次数。
ORG 0000H
AJMP MAIN
ORG 001BH ;T1中断入口
AJMP INTT1
ORG 0030H ;主程序
MAIN:MOV TMOD,#60H ;T1工作于计数方式2
MOV TH1,#253 ;T1计数初值(256-3)
MOV TL1,#253
SETB TR1 ;启动T1工作
SETB ET1 ;允许T1中断
SETB EA ;开中断
MOV 30H, #00H ;中断次数计数单元清零
W AIT:SJMP W AIT ;等待中断
;-------------------------------;中断服务程序
INTT1:INC 30H ;次数单元加1
MOV A,30H
CPL A
MOV P1,A
RETI ;中断返回
10.方式0数据发送的设计
查询方式:
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV SCON,#00H ;串口方式0
MOV SBUF,#0fH ;发送数据
L1: JNB TI,L1 ;等待串口方式完毕
CLR TI ;清发送中断标志
SJMP $
END
采用中断方式
ORG 0000H
LJMP MAIN
ORG 0023H ;串口中断向量入口
LJMP UARTINT
ORG 0030H
MAIN: MOV SP,#60H
MOV SCON,#00H ;串口方式0
SETB EA ;开中断
SETB ES ;允许串口中断
MOV SBUF,#0f0H ;发送数据
SJMP $
UARTINT:CLR TI ;中断服务程序
RETI
END
11.让P1口灯轮流亮起来
?ORG 0000H
?LJMP MAIN
?ORG 0030H
MAIN: MOV A, #0FEH ;初始值
MOV SCON, #00H ;串口方式0
?L1: MOV SBUF, A ;发送数据
?JNB TI, $ ;发送完毕?
?CLR TI
?LCALL DLEAY ;延时0.3S
?RL A ;左移1位
?JB ACC.7, L1 ;8位循环完毕?
?L2:MOV SBUF, A ;发送数据
?JNB TI, $
?CLR TI
?LCALL DLEAY ;延时
?RR A ;右移1位
?JB ACC.0, L2 ;8位循环完毕?
?SJMP L1 ;重新开始
?DLEAY:MOV R7, #03H
DL1: MOV R6, #0
DL2: MOV R5, #0
DJNZ R5, $
DJNZ R6, DL2
DJNZ R7, DL1
RET
?12.在某控制系统中有甲、乙两个单片机,甲单片机首先将P1口上拨动开关状态发送给乙单片机。乙单片机将接收的数据输出至P1,点亮相应端口的LED。设串口波特率采用9600(实验台fosc=11.0592MHz),电路如图所示: ?
?方式1的波特率:
?B=T1的溢出率×2SMOD/32
=2SMOD/32×fosc/(12×(256-TH1))
?取SMOD=0则:9600=11.0592×106/((12×(256-TH1))×32) ?TH1=253,串口禁止中断。
?定时器T1工作于方式2(8位自动重装初值),禁止中断。ORG 0000H
MOV TMOD,#20H ;T1方式2
MOV TH1,#253 ;初值253,B=9600
MOV TL1,#253
MOV SCON,#40H ;串口方式1
MOV PCON,#00H ;SMOD=0
SETB TR1 ;启动T1
LL:MOV P1,#0FFH
MOV SBUF,P1 ;发送数据
JNB TI,$
CLR TI
SJMP LL
END
ORG 0000H
MOV TMOD,#20H ;T1方式2
MOV TH1,#253 ;初值253,B=9600
MOV TL1,#253
MOV SCON,#40H ;串口方式1
MOV PCON,#00H ;SMOD=0
SETB TR1 ;启动T1
SETB REN ;允许串口接收
LL:MOV P1,SBUF ;接收数据
JNB RI,$
CLR RI
SJMP LL
END
13.P1口控制LED进行倒计时显示。
ORG 0000H
LJMP 0030H
ORG 000BH
LJMP INTT0
ORG 0030H
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H ;50ms
SETB TR0
SETB ET0
SETB EA
MOV 30H,#00 ;计时单元清零
MOV 31H,#09H ;初值
MOV DPTR,#TAB
MOV A,31H
MOVC A,@A+DPTR
MOV P1,A ;显示“9”
SJMP $
;---------
INTT0:MOV TH0,#3CH
MOV TL0,#0B0H
INC 30H
MOV A,30H
CJNE A,#20,L2 ;1S到?
MOV 30H,#0 ;计时单元清零
DEC 30H ;倒计时单元减1
MOV A,30H
CJNE A,#0FFH,L1 ;9秒完成?
CLR TR0
SJMP L2
L1:MOV DPTR,#TAB
MOVC A,@A+DPTR ;转换成七段码
MOV P1,A
L2:RETI
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH ;共阳极7段码表
14.在LED显示器上显示“12345678”
使用P1口作段口、P3口作位口
;---------------------------------------------
; 74LS138:C-->P27,B-->P26,A-->P25, Y7-->8255CS, A1A0-->A1A0 ;---------------------------------------------
ORG 0000H
LJMP 0030H
ORG 0030H
MOV R0,#30H ;显示缓冲器首址
MOV A,#01
MOV R7,#08 ;8个LED
CHU:MOV @R0,A
INC A ;送入12345678
INC R0
DJNZ R7,CHU
;-------------------
MOV DPTR,#7FFFH ;8255初始化
MOV A,#10000000H ;控制字
MOVX @DPTR,A
;-------------------
STAR:LCALL DISP
AJMP STAR
;-------------------------
DISP:MOV R0,#30H ;显示缓冲器首址
MOV R3, #01H ;位码
MOV R7,#08H ;8个LED
DIR1:MOV A, @R0 ;取显示数据
MOV DPTR, #TAB ;7段码表
MOVC A, @A+DPTR ;查表求得7段码
MOV DPTR,#7FFCH
MOVX @DPTR, A ;7段码送段口
MOV A, R3 ;位码
INC DPTR
MOVX @DPTR, A ;位码送位口
LCALL DL1 ;延时1ms
RL A ;位码左移
MOV R3, A
INC R0 ;指向下一位
DJNZ R7,DIR1 ;8位显示完毕?
MOV DPTR,#7FFCH ;段口
MOV A,#00H ;暗码
MOVX @DPTR,A ;关显示
RET
;-----------------------
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH ;共阳极7段码表;------------------------
DL1: MOV R6, #02H ;1ms延时
DL11:MOV R5, #248
DJNZ R5, $
DJNZ R6, DL11
RET
;------------------------
?15YE_JING.ASM
?
;-----------------------------------------------------------------------
; E=P10 RW=P11 RS=P12 I/O操作
;-----------------------------------------------------------------------
COM EQU 27H ;命令寄存器单元
TIME EQU 30H ;延时单元
;-------------------------------------
HANG1 EQU 80H ;液晶第一行
HANG2 EQU 90H ;液晶第二行
HANG3 EQU 88H ;液晶第三行
HANG4 EQU 98H ;液晶第四行
;------------------------------------
E EQU P1.0
RW EQU P1.1
RS EQU P1.2
;------------------------------------
ORG 0000H
AJMP 0030H
ORG 0030H
LCALL INI ;初始化
;---------------------------
MAIN1:MOV COM,#HANG1 ;第1行
MOV DPTR,#WEL_1
LCALL W_LINE
MOV COM,#HANG2 ;第2行
MOV DPTR,#WEL_2
LCALL W_LINE
MOV COM,#HANG3 ;第3行
MOV DPTR,#WEL_3
LCALL W_LINE
MOV COM,#HANG4 ;第4行
MOV DPTR,#WEL_4
LCALL W_LINE
;--------------------------
STAR:LJMP STAR
;----------------------------
W_LINE:MOV A,COM
LCALL SEND_I ;写行
MOV R2,#16 ;16个
W_L1:MOV A,#00H
MOVC A,@A+DPTR ;取数据
LCALL SEND_D
INC DPTR
DJNZ R2,W_L1
RET
;-----------------------------------------------------
INI:MOV A,#33H ;基本指令,8bit模式,基本指令LCALL SEND_I
LCALL DELAY
MOV A,#0cH ;显示开,游标关,反白关
LCALL SEND_I
LCALL DELAY
MOV A,#01H ;清除显示
LCALL SEND_I
LCALL DELAY
MOV A,#06H ;进入设定点,游标右移,画面不移动
LCALL SEND_I
LCALL DELAY
RET
;------------------------
DELAY:MOV R7,#6 ;延时3ms
D2:MOV R6,#248
DJNZ R6,$
DJNZ R7,D2
RET
;----------------------------
WEL_1:DB ' 山东理工大学'
WEL_2:DB '电气电子工程学院'
WEL_3:DB '单片机互动教学室'
WEL_4:DB 'DTS-A 教学平台'
;-----------------------------
; 发送数据子程序
;-----------------------------
SEND_D:LCALL CHK_BUSY ;检测模块内部工作状态
SETB RS ;RS=1 选择数据寄存器
CLR RW ;RW=0 写状态
MOV P0,A ;送数据到数据口
SETB E
NOP
NOP
CLR E
RET
;----------------------
; 发送指令子程序
;----------------------
SEND_I:LCALL CHK_BUSY ;检测模块内部工作状态
CLR RS ;RS=0 选择指令寄存器
CLR RW ;RW=0 写状态
MOV P0,A ;送数据到数据口
SETB E
NOP
NOP
CLR E
RET
;----------------------
; 测忙碌子程序
;----------------------
CHK_BUSY:MOV P0,#0FFH
CLR RS ;RS=0 选择指令寄存器
SETB RW ;RW=1 读状态
SETB E
JB P0.7,$ ;判别BF位
CLR E
RET
;--------------------
16.8255做显示器接口
1、设计8255的译码电路;
?2、确定8255的端口地址;
?3、在LED显示器上显示“12345678”
;---------------------------------------------
; 74LS138:C-->P27,B-->P26,A-->P25, Y7-->8255CS, A1A0-->A1A0 ;---------------------------------------------
ORG 0000H
LJMP 0030H
ORG 0030H
MOV R0,#30H ;显示缓冲器首址
MOV A,#01
MOV R7,#08 ;8个LED
CHU:MOV @R0,A
INC A ;送入12345678
INC R0
DJNZ R7,CHU
;-------------------
MOV DPTR,#7FFFH ;8255初始化
MOV A,#10000000H ;控制字
MOVX @DPTR,A
;-------------------
STAR:LCALL DISP
AJMP STAR
;-------------------------
DISP:MOV R0,#30H ;显示缓冲器首址
MOV R3, #01H ;位码
MOV R7,#08H ;8个LED
DIR1:MOV A, @R0 ;取显示数据
MOV DPTR, #TAB ;7段码表
MOVC A, @A+DPTR ;查表求得7段码
MOV DPTR,#7FFCH
MOVX @DPTR, A ;7段码送段口
MOV A, R3 ;位码
INC DPTR
MOVX @DPTR, A ;位码送位口
LCALL DL1 ;延时1ms
RL A ;位码左移
MOV R3, A
INC R0 ;指向下一位
DJNZ R7,DIR1 ;8位显示完毕?
MOV DPTR,#7FFCH ;段口
MOV A,#00H ;暗码
MOVX @DPTR,A ;关显示
RET
;-----------------------
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH ;共阳极7段码表;------------------------
DL1: MOV R6, #02H ;1ms延时
DL11:MOV R5, #248
DJNZ R5, $
DJNZ R6, DL11
RET
;------------------------
17.程序D6L3.ASM为键盘扫描例程,在LED上显示对应的键值。
;---------------------------------------------
; 74LS138:C-->P27,B-->P26,A-->P25, Y7-->8255CS, A1A0-->A1A0
;---------------------------------------------
OUTSEG EQU 0FFFCH ;PA口:字形控制口
OUTBIT EQU 0FFFDH ;PB口:字位/键扫控制口
IN_KEY EQU 0FFFEH ;PC口:键盘读入口
CS8255 EQU 0FFFFH ;8255控制口
XBUF EQU 30H ;显示缓冲器首址
KEY_X EQU 38H ;键号存储单元
;--------------------------------------------
ORG 0000H
LJMP 0030H
;-------------------------
ORG 0030H
MOV SP,#0A0H
MOV R0,#XBUF+1 ;显示缓冲器首址
MOV A,#11H ;暗码
MOV R7,#07 ;7个LED
CHU:MOV @R0,A ;显示暗码
INC R0
DJNZ R7,CHU
MOV XBUF,#10H ;显示“P.”
;-------------------
; 8255初始化
;-------------------
MOV DPTR,#CS8255
MOV A,#10001001B ;8255控制字:PA、PB输出,PC输入
MOVX @DPTR,A ;8255初始化
;-------------------
; 主程序
;-------------------
STAR:LCALL DISP ;
LCALL KEY ;键盘扫描
MOV A,KEY_X
CJNE A,#0FFH,JIAN_PAN ;有键输入?
AJMP STAR
;---------------------
; 键分析处理
;---------------------
JIAN_PAN:CJNE A,#10H,JIAN1
JIAN1:JC SHUZI ;数字键?
LJMP ML_JIAN ;命令键处理
;----------------------
; 数字键处理程序
;----------------------
SHUZI:NOP ;数字键处理
MOV XBUF,A ;数字键键值送显示缓冲区
MOV XBUF+6,#11H
MOV XBUF+7,#11H ;清除命令键的显示
LCALL SHI_F ;键释放
LJMP STAR
;------------------------
; 命令键处理程序
;------------------------
ML_JIAN:NOP ;命令键处理
CJNE A,#10H,ML1 ;是“宏单”?
LJMP HONGDAN ;“宏单”处理ML1:CJNE A,#11H,ML2 ;是“运行”?
LJMP YUNXING ;“运行”处理ML2:CJNE A,#12H,ML3 ;是“返回”?
LJMP FANHUI ;“返回”处理
ML3:CJNE A,#13H,ML4 ;是“单步”?
LJMP DANBU ;“单步”处理
ML4:LCALL SHI_F ;键释放
LJMP STAR ;
;-------------------------
HONGDAN:NOP ;宏单键处理程序
MOV XBUF+6,#0AH
MOV XBUF+7,#0AH ;模拟显示“AA”
LCALL SHI_F ;键释放
LJMP STAR
;-------------------------
YUNXING:NOP ;运行键处理程序
MOV XBUF+6,#0BH
MOV XBUF+7,#0BH ;模拟显示“BB”
LCALL SHI_F ;键释放
LJMP STAR
;-------------------------
FANHUI:NOP ;返回键处理程序
MOV XBUF+6,#0CH
MOV XBUF+7,#0CH ;模拟显示“CC”
LCALL SHI_F ;键释放
LJMP STAR
;-------------------------
DANBU:NOP ;单步键单处理程序
MOV XBUF+6,#0DH
MOV XBUF+7,#0DH ;模拟显示“DD”
LCALL SHI_F ;键释放
LJMP STAR
;-------------------------
; 键盘扫描程序
; 键值在KEY_X中,无键按下返回“FF”,有键按下,返回键值;-------------------------
KEY:MOV B,#00H ;全扫描码
LCALL KEYIN ;全扫描键盘
ANL A,#07H
CJNE A,#07H,KEY1
SJMP KEY0
KEY1:LCALL DISP ;延时消抖动
MOV B,#00H ;全扫描码
LCALL KEYIN ;扫描键盘
ANL A,#07H
CJNE A,#07H,KEY2
KEY0:MOV KEY_X,#0FFH ;无键按下,返回0FFH RET
;-------------------------
; 逐行扫描
;-------------------------
KEY2:MOV R7,#08H ;8行
MOV B,#0FEH ;行扫描码
KEYSAO:LCALL KEYIN
ANL A,#07H
CJNE A,#07H,KEY_FEN ;是该行的键按下?
MOV A,B
RL A
MOV B,A
DJNZ R7,KEYSAO
MOV KEY_X,#0FFH ;无键按下,返回0FFH
RET
;-------------------------
; 计算键值
;-------------------------
KEY_FEN:JNB ACC.0,LIE0 ;第0列的键?
JNB ACC.1,LIE1 ;第1列键?
MOV R3,#16 ;2列键值表偏移量
SJMP FEN1
LIE0:MOV R3,#0 ;0列键值表偏移量
SJMP FEN1
LIE1:MOV R3,#8 ;1列键值表偏移量
MOV DPTR,#TABKEY ;键值表
FEN1:MOV B,A ;取扫描码
MOV R7,#08H
MOV R2,#00H
FEN10:RRC A
JNC FEN2
INC R2
DJNZ R7,FEN10
FEN2:MOV A,R2 ;取键号
ADD A,R3 ;加上偏移量
MOVC A,@A+DPTR ;取键值
MOV KEY_X,A ;存键值
RET
;-------------------------
KEYIN:MOV DPTR,#OUTBIT ;键扫描口
MOV A,B
MOVX @DPTR,A
MOV DPTR,#IN_KEY ;键入口
MOVX A,@DPTR
RET
;------------------------
; 键释放判断
;------------------------
SHI_F:LCALL DISP
MOV B,#00H ;全扫描码
LCALL KEYIN ;扫描键盘
MOV A,KEY_X
ANL A,#07H
CJNE A,#07H,SHI_F ;键释放?
LCALL DISP
RET
;-------------------------
TABKEY:DB 0bh,0ah,06h,09h,05h,08h,04h,07h; 第0列键值DB 0dh,0ch,0eh,03h,0fh,02h,00h,01h; 第1列键值
DB 10H,11H, 12H, 13H ; 第2列键值; 宏单运行返回单歩
;-------------------------
; 显示子程序
;-------------------------
DISP:MOV R0,#XBUF ;显示缓冲器首址MOV R3, #80H ;位码
MOV R7,#08H ;8个LED DIR1:MOV A, @R0 ;取显示数据
MOV DPTR, #TAB ;7段码表
MOVC A, @A+DPTR ;查表求得7段码
MOV DPTR,#OUTSEG ;8255段口
MOVX @DPTR, A ;7段码送段口
MOV A, R3 ;位码
MOV DPTR,#OUTBIT ;8255位口
MOVX @DPTR,A ;位码送位口
LCALL DL1 ;延时1ms
RR A ;位码左移
MOV R3, A
INC R0 ;指向下一位
MOV DPTR,#OUTSEG
MOV A,#0FFH ;暗码
MOVX @DPTR,A ;关显示
DJNZ R7,DIR1 ;8位显示完毕?
RET
;-----------------------
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH ;共阳极7段码表
DB 0CH ;10H--"P."
DB 0FFH ;11H--暗码
;------------------------
DL1: MOV R6, #02H ;1ms延时
DL11:MOV R5, #248
DJNZ R5, $
DJNZ R6, DL11
RET
;------------------------
19; 1、设计一个实时时钟,显示“时分秒”;
; 2、单片机晶振fosc=11.0592MHz;
; 3、要求:利用开关K1、K2、K3进行功能控制,当K1闭合时,实现秒表计时功能,; K2闭合时,暂停计时,K2断开后,继续计时,K3闭合时,秒表清零。
;-----------------------------------------------------------------------
; 8255CS-->P2.7, ADD1-->A1, ADD0-->A0, K1-->P1.0, K2-->P1.1,K3-->P1.2
;-----------------------------------------------------------------------
TIME EQU 30H ;50ms次数单元
MIAO EQU 31H ;秒单元
FEN EQU 32H ;分单元
SHI EQU 33H ;时单元
TIME_ML EQU 34H ;秒表计时单元低位
TIME_MH EQU 35H ;秒表计时单元高位
TIME_MB EQU 36H ;秒表50ms计时单元
XBUF EQU 38H ;显示缓冲区
MIAO_W BIT 00H ;秒表计时允许标志位
JISHI_W BIT 01H ;秒表计时开始标志位
WEI BIT 02H
K1 BIT P1.0 ;定义开关量
K2 BIT P1.1
K3 BIT P1.2
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP INTT0
MAIN:MOV SP,#0A0H
MOV TMOD,#01H
MOV TH0,#41H
MOV TL0,#0D9H ;50ms
SETB ET0
SETB EA
SETB TR0
;-------------------
MOV R0,#20H ;显示缓冲器首址
CLR A
MOV R7,#20H
CHU:MOV @R0,A ;清缓冲区
INC R0
DJNZ R7,CHU
;-------------------
MOV SHI,#10H
MOV FEN,#43H
;---------------------
MOV DPTR,#7FFFH ;8255初始化
MOV A,#80H ;控制字
MOVX @DPTR,A
;************************************************* STAR:LCALL DISP
JNB K1,MIAOBIAO ;K1闭合?
CLR MIAO_W ;清除秒表计时标志位
JNB WEI,STAR
LCALL SHUA
CLR WEI
AJMP STAR
;-------------------------
MIAOBIAO:SETB MIAO_W ;秒表计时标志位SETB WEI
JB K2,M1 ;K2断开?
CLR JISHI_W ;清计时允许位
SJMP M2
M1:SETB JISHI_W ;秒表计时允许
M2:JB K3,M3 ;K3断开?
MOV TIME_ML,#00 ;计时单元清零
MOV TIME_MH,#00
MOV TIME_MB,#00H ;清次数单元
M3:LJMP STAR
SHUA:MOV XBUF+2,#10H ;显示:XX-XX-XX MOV XBUF+5,#10H
MOV R0,#XBUF
MOV R2,SHI
LCALL CHEZI ;拆字
;-----------------
MOV R0,#XBUF+3
MOV R2,FEN
LCALL CHEZI ;拆字
;------------------
MOV R0,#XBUF+6
MOV R2,MIAO
LCALL CHEZI
RET
;************************************************** INTT0:PUSH PSW
PUSH ACC
SETB PSW.3
CLR PSW.4 ;工作1区
MOV TH0,#41H
MOV TL0,#0D9H
JNB MIAO_W,T0M1 ;秒表功能开启?
;-----------------------
JNB JISHI_W,MBIAO1 ;计时暂停?
INC TIME_MB
MOV A,TIME_MB
CJNE A,#2,MBIAO1 ;0.1S到?
MOV TIME_MB,#00H
MOV A,TIME_ML
ADD A,#01
DA A
MOV TIME_ML,A
MOV A,TIME_MH
ADDC A,#00H
DA A
MOV TIME_MH,A
MBIAO1:;LJMP T0TUI1
;-----------------------
T0M1:INC TIME
MOV A,TIME
CJNE A,#20H,T0TUI1 ;1秒?
MOV TIME,#00H
MOV A,MIAO
ADD A,#01H
DA A
MOV MIAO,A
CJNE A,#60H,T0TUI1 ;60秒?
MOV MIAO,#00H
MOV A,FEN
ADD A,#01H
DA A
MOV FEN,A
CJNE A,#60H,T0TUI1 ;60分?
MOV FEN,#00H
MOV A,SHI
ADD A,#01H
MOV SHI,A
DA A
CJNE A,#24H,T0TUI1 ;24小时?
MOV SHI,#00H
;-----------------
T0TUI1: ;刷新显示
JNB MIAO_W,X_SHI1 ;时间显示?
MOV XBUF,#11H
MOV XBUF+1,#11H
MOV XBUF+2,#11H
MOV XBUF+3,#11H ;显示器高4位暗码
MOV R0,#XBUF+4
MOV R2,TIME_MH ;显示秒表计时
LCALL CHEZI
MOV R0,#XBUF+6
MOV R2,TIME_ML
LCALL CHEZI ;拆字
LJMP T0TUI
;--------------------
X_SHI1:MOV XBUF+2,#10H ;显示:XX-XX-XX MOV XBUF+5,#10H
MOV R0,#XBUF
MOV R2,SHI
LCALL CHEZI ;拆字
;-----------------
MOV R0,#XBUF+3
MOV R2,FEN
LCALL CHEZI ;拆字
;------------------
MOV R2,MIAO
LCALL CHEZI ;拆字
;---------------------
T0TUI:POP ACC
POP PSW
RETI
;----------------------
CHEZI:MOV A,R2
SW AP A
ANL A,#0FH
MOV @R0,A
INC R0
MOV A,R2
ANL A,#0FH
MOV @R0,A
RET
;-------------------------
DISP:MOV R0,#XBUF ;显示缓冲器首址
MOV R3, #80H ;位码
MOV R7,#08H ;8个LED
DIR1:MOV A, @R0 ;取显示数据
MOV DPTR, #TAB ;7段码表
MOVC A, @A+DPTR ;查表求得7段码
MOV B,A
JNB MIAO_W,DIR2 ;秒表?
MOV A,R3
JNB ACC.1,DIR2
MOV A,B
ANL A,#7FH ;显示小数点
MOV B,A
DIR2:MOV DPTR,#7FFCH
MOV A,B
MOVX @DPTR, A ;7段码送段口
MOV A, R3 ;位码
INC DPTR
MOVX @DPTR, A ;位码送位口
LCALL DL1 ;延时1ms
RR A ;位码左移
MOV R3, A
INC R0 ;指向下一位
DJNZ R7,DIR1 ;8位显示完毕?
MOV DPTR,#7FFCH ;段口
MOV A,#0FFH ;暗码
MOVX @DPTR,A ;关显示
RET
;-----------------------
TAB:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H
DB 80H,90H,88H,83H,0C6H,0A1H,86H,8EH ;共阳极7段码表DB 0BFH ;"-"
DB 0FFH
;------------------------
DL1: MOV R6, #02H ;1ms延时
DL11:MOV R5, #248
DJNZ R5, $
单片机产品开发流程12.
详细的单片机开发流程 一、项目评估: 出初步技术开发方案,据此出预算,包括可能的开发成本、样机成本、开发耗时、样机制造耗时、利润空间等,然后根据开发项目的性质和细节评估风险,以决定项目是否落实资金上马。 二、项目实施: 1、设计电原理图: 在做这一步时要考虑单片机的资源分配和将来的软件框架、制定好各种通讯协议, 尽量避免出现当板子做好后, 即使把软件优化到极限仍不能满足项目要求的情况, 还要计算各元件的参数、各芯片间的时序配合, 有时候还需要考虑外壳结构、元件供货、生产成本等因素, 还可能需要做必要的试验以验证一些具体的实 现方法。设计中每一步骤出现的失误都会在下一步骤引起连锁反应, 所以对一些没有把握的技术难点应尽量去核实。 2、设计印刷电路板(PCB 图: 完成电原理图设计后, 根据技术方案的需要设计 PCB 图, 这一步需要考虑机械结构、装配过程、外壳尺寸细节、所有要用到的元器件的精确三维尺寸、不同制 版厂的加工精度、散热、电磁兼容性等等, 为最终完成这一步常常需要几十次回 头修改电原理图。 3、把 PCB 图发往制版厂做板: 将加工要求尽可能详细的写下来与 PCB 图文件一起发电邮给工厂,并保持沟通,及时解决加工中出现的一些相关问题。 4、定购开发系统和元件:
要考虑到开发过程中的可能的损耗, 供货厂商的最小订货量、商业信誉、价格、服务等, 具体工作包括整理购货清单、联系各供货厂商、比较技术参数、下定单、跑银行汇款、传真汇款底单、催货等等。 5、装配样机: PCB板拿到后开始样机装配,设计中的错漏会在装配过程开始显现,尽量去补救。 6、样机调试: 样机初步装好就可以开始调试, 当然需要有软件才能调, 有人说单片机的软件不是编出来而是调出来的, 所以这个过程需要用到电烙铁、刻刀、不同参数的元件、各种调试和仿真软件、样机的模拟工作环境等。常常会因为设计阶段的疏忽而不得不对样机动手术, 等整个调试终于完成之后, 往往样机的板子已经面目全非。 7、整理数据: 到了这一步, 项目开发的大部分工作都已经完成了, 这时候需要将样机研发过程中得到的重要数据记录保存下来,比如更新电原理图里的元件参数、 PCB 元件库里的三维模型, 还要记录暴露出来的设计上的失误、分析失误的原因、采用的补救方案等等。 8、 V1.1 如果项目进入生产阶段或确有需要, 可以根据修正后的技术方案按以上各个步骤重做一台完善的 V1.1版样机。 9、编写设备文档 包括编写产品说明书、拍摄外观图片等, 如果设备需要和电脑通讯, 还得写好与电脑的接口标准和通讯协议说明。
湖南师范大学单片机复习题.
《单片机原理与应用》复习提纲 一、复习范围 1. 单片机的基本结构。 2. 单片机内部结构、存储器结构、I/O口操作、专用功能寄存器、 位寻址区及位操作。 3. 定时/计数器结构,工作方式,方式字、控制字,时间常数的计 算,初始化编程。 4. 串行通信数据帧格式、工作方式、波特率时钟频率的计算、初 始化编程。 5. 中断源、中断优先级、中断入口地址、中断触发方式、外中断 的扩展、中断编程。 6. 熟记指令系统及各条指令的应用。 7. 89C51单片机的PSW寄存器各位标志的意义如何? 二、复习题 (一)填空题 1、CPU包括两个主要部分,即(运算器)和(控制器)。 2、89C51单片机的四个存储空间是(片内数据存储器)、(片外数 据存储器)、(片内程序存储器)、(片外程序存储器 )。*ROM只是存储器的一种 3、工作寄存器区的选择是由PSW的( D4/RS1 PSW.3(RS0) )和( D3/RS0 PSW.4 (RS1) )位来决定的。 4、若由程序设定RS1、RS0=00,则工作寄存器R0~R7的直接地址为( 00~07H )。 5、单片机的基本结构由(CPU系统)、(程序存储器ROM )、( 数据存储器RAM )、时钟、定时计数器、I/O接口等几部分组成。 6、若由程序设定RS1、RS0=11,则工作寄存器R0的直接地址为(18H )。
7、MOVC A,@A+DPTR 指令的寻址方式是(变址寻址基址寄存器加 变址寄存器间接寻址)。 若累加器ACC中的数据为10000011B则PSW中的 P=( 1 )。 9、程序存储器常用来存放(程序)和(始终要保留的常数表格常数 )。 10、若系统晶振频率为6MHz,则机器周期为( 2微秒),最短和最长 的指令周期分 别为( 2微秒)和( 8微秒 10)。 11、读片外RAM数据的两条指令是( MOVX A,@Ri )、( MOVX A,@DPTR )。 12、PSW的字节地址为0D0H,其数据最高位的三种表示方法为0D7H、( OE7H ) 和( OF7H )。 13、51系列单片机扩展程序存储器最大寻址范围为(0000H~FFFFH 16 条地址线)。 14、常用做间址寄存器用的两种寄存器是( R0 )、( R1 )。 15、片内RAM的位寻址区为( 20H~2FH)字节地址段,其位地址范围 为( 00H~7FH )。 16、用一条指令实现累加器的数据高、低4位互换( SWAP A )。 17、写片外RAM数据的两条指令是( MOVX @Ri,A )、(MOVX @DPTR,A )。 18、89C51单片机有( 128 )字节片内数据存储器,有(4 )个8位的 I/O口。 19、89C51单片机有( 5 )个中断源,复位后中断优先级最高的中断源 是(外部中断0 ),其中断入口地址是( 0003H )。 20、MOVC A,@A+PC指令采用的是(变址基址寄存器加变址寄 存器间接寻址)寻址方式。
单片机原理及应用在线考试试题答案
中国石油大学(北京)远程教育学院期末考核 《单片原理及应用》 说明:共100分,每题20分,在下题中任选5题。 1.MCS-51的时钟周期、机器周期、指令周期是如何分配的?当振荡频率为10MHz时,一 个机器周期为多少毫秒? 参考第二章第四节。MCS-51典型的指令周期为一个机器周期,每个机器周期由6个状态周期组成,每个状态周期由2个时钟周期(振荡周期)组成。一个机器周期=6×一个状 态周期=12×一个时钟周期=12× 答: 为使单片机能够完成取指、译码、执行指令等操作,需要为单片机提供时钟信号以产生必要的时序。单片机振荡电路中的振荡信号对应的周期叫振荡周期(时钟周期)。对振荡周期12分频后得到的信号周期叫做机器周期,即12个时钟周期,是1个机器周期。一个机器周期宽度为6个状态周期,并依次表示为S1~S6。每个状态周期由2个时钟周期(振荡周期)组成。Mcs51单片机的111条指令,执行时,所花费的时间,称为指令周期。 一个机器周期=6×一个状态周期=12×一个时钟周期=12×=12×1/10=1.2 us=0.0012ms 2.指出下列指令中画线的操作数的寻址方式? MOV R0, #55H ;立即寻址 MOV A, 2AH ;直接寻址 MOV A, @R1 ;寄存器间接寻址 MOV @R0, A ;寄存器寻址 ADD A, R7 ;寄存器寻址 MOVX A, @DPTR ;寄存器间接寻址 MOV DPTR, #0123H ;立即寻址 MOVC A, @A+DPTR ;基址加变址寻址 INC DPTR;寄存器寻址 参考第三章第二节指令寻址方式 3.外部RAM中从1000H到10FFH有一个数据区,现在将它传送到外部RAM中2500H单元 开始的区域中,编程完成上述功能。 参考第三章第三节数据传送类指令和第六章第二节外部存储器扩展 START: MOV R0,#00H MOV DPTR,#1000H LOOP: MOVX A,@DPTR MOV DPH,#25H MOVX @DPTR,A MOV DPH,#10H
嵌入式期末复习提纲包含答案
嵌入式期末复习提纲包 含答案 文件排版存档编号:[UYTR-OUPT28-KBNTL98-UYNN208]
考试题型: ?1、判断题 10分 ?2、填空题 20分 ?3、选择题 20分 ?4、简答题 30分(5个) ?5、应用题 20分(3个) ?6、名字解释 复习资料: ?书本 ?PPT课件,平时课堂例题。 ?平时作业和练习 ?考试范围:1-5章 ?其他说明: ?课后习题是重点。 ?简答题来源于前5章,每章一个。 每章重点: 第一章: 1.什么是嵌入式系统试简单列举一些生活中常见的嵌入式系统的实例。 嵌入式系统是用于检测、控制、辅助、操作机械设备的装置。以应用为中心,一计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。 2.嵌入式系统具有哪些特点 3.嵌入式系统由哪些部分组成简单说明各部分的功能和作用。
4.嵌入式系统是怎样分类的 5.嵌入式系统的定义。 嵌入式系统是用于检测、控制、辅助、操作机械设备的装置。以应用为中心,一计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积和功耗等严格要求的专用计算机系统。 6.什么是交叉编译,试说明交叉编译的实现过程。 7.嵌入式系统有哪些应用领域。 嵌入式系统技术具有非常广阔的应用前景,其应用领域可以包括: 1.工业控制: 基于嵌入式芯片的工业自动化设备将获得长足的发展,目前已经有大量的8、16、32位嵌入式微控制器在应用中,网络化是提高生产效率和产品质量、减少人力资源主要途径,如工业过程控制、数字机床、电力系统、电网安全、电网设备监测、石油化工系统。就传统的工业控制产品而言,低端型采用的往往是8位单片机。但是随着技术的发展,32位、64位的处理器逐渐成为工业控制设备的核心,在未来几年内必将获得长足的发展。 2.交通管理: 在车辆导航、流量控制、信息监测与汽车服务方面,嵌入式系统技术已经获得了广泛的应用,内嵌GPS模块,GSM模块的移动定位终端已经在各种运输行业获得了成功的使用。目前GPS设备已经从尖端产品进入了普通百姓的家庭,只需要几千元,就可以随时随地找到你的位置。 3.信息家电:
郑州轻工业学院单片机考试试题带答案
郑州轻工业学院单片机考试试题带答案
单片机原理及应用试卷A 题号一二三四五六七八九总分 得分 一、填空题(每空1分,共20分) 二、1、单片机是将微处理器、一定容量的 RAM 和ROM以及 I/O 口、定时器等电路集成在一块芯片上而构成的微型 计算机。 三、2、单片机89C51片内集成了 4 KB的FLASH ROM,共有 5 个中断源。 四、3、两位十六进制数最多可以表示 256 个存储单元。 五、4、89C51是以下哪个公司的产品?( C ) 六、A、INTEL B、AMD C、ATMEL D、PHILIPS 七、5、在89C51中,只有当EA引脚接高电平时,CPU才访问片内的Flash ROM。 八、6、是非题:当89C51的EA引脚接低电平时,CPU只能访问片外ROM,而不管片内是否有程序存储器。T 九、7、是非题:当89C51的EA引脚接高电平时,CPU只能访问片内的4KB空间。F 十、8、当CPU访问片外的存储器时,其低八位地址由 P0 口提供,高八位地址由 P2 口提供,8位数据 由 P0 口提供。 十一、9、在I/O口中, P0 口在接LED时,必须提供上拉电阻, P3 口具有第二功能。 十二、10、是非题:MCS-51系列单片机直接读端口和读端口锁存器的结果永远是相同的。F 十三、11、是非题:是读端口还是读锁存器是用指令来区别的。T 十四、12、是非题:在89C51的片内RAM区中,位地址和部分字节地址是冲突的。F 十五、13、是非题:中断的矢量地址位于RAM区中。F 十六、14、MCS-51系列单片机是属于( B )体系结构。 十七、A、冯诺依曼 B、普林斯顿 C、哈佛 D、图灵 十八、15、89C51具有 64 KB的字节寻址能力。 十九、16、是非题:在89C51中,当CPU访问片内、外ROM区时用MOVC指令,访问片外RAM区时用MOVX指令,访问片内RAM区时用MOV指令。T 二十、17、在89C51中,片内RAM分为地址为 00H~7FH 的真正RAM区,和地址为80H~FFH的特殊功能寄存器(SFR) 区两个部分。 二十一、18、在89C51中,通用寄存器区共分为 4 组,每组 8 个工作寄存器,当CPU复位时,第 0 组寄存器为当前的工作寄存器。 二十二、 1、单片微型计算机由CPU、存储器和I/O 三部分组成。 2、MCS-51系统中,当PSEN信号有效时,表示从P0口稳定地送出了低8位地址。 3、访问8031片外数据存储器采用的是寄存器间接寻址方式。 4、累加器(A)=80H,执行完指令ADD A,#83H后,进位位CY= 1 。 5、指令LCALL 37B0H,首地址在2000H,所完成的操作是2003H入栈,37B0H送入PC。 6、51有5个中断源,有2个中断优先级,优先级由软件填写特殊功能寄存器IP 加以选择。 7、在变址寻址方式中,以A作为变址寄存器,以PC或DPTR作基址寄存器。
单片机程序设计方法总结.doc
单片机程序设计方法总结 程序设计是单片机开发最重要的工作程序设计就是利用单片机的指令系统根据应用系统即目标产品的要求编写单片机的应用程序其实我们前面已经开始这样做过了这一课我们不是讲如何来设计具体的程序而是教您设计单片机程序的基本方法不过在讲解之前还是有必要先了解一下单片机的程序设计语言这里的语言与我们通常理解的语言是有区别的它指的是为开发单片机而设计的程序语言如果 您没有学过程序设计可能不太明白我给大家简单解释一下您知道微软的VB VC 吗VB VC 就是为 某些工程应用而设计的计算机程序语言通俗地讲它是一种设计工具只不过这种工具是用来设计计 算机程序的要想设计单片机的程序当然也要有这样一种工具说设计语言更确切些单片机的设计 语言基本上有三类: 1 .完全面向机器的机器语言 机器语言就是能被单片机直接识别和执行的语言计算机能识别什么以前我们讲过--是数字0 或1 所以机器语言就是用一连串的0 或1 来表示的数字比如MOV A 40H 用机器语言来表示就是 11100101 0100000 很显然用机器语言来编写单片机的程序不太方便也不好记忆我们必须想办法 用更好的语言来编写单片机的程序于是就有了专门为单片机开发而设计的语言 2. 汇编语言 汇编语言也叫符号化语言它使用助记符来代替二进制的0 和1 比如刚才的MOV A40H 就是汇编语言 指令显然用汇编语言写成的程序比机器语言好学也好记所以单片机的指令普遍采用汇编指令来编写 用汇编语言写成的程序我们就叫它源程序或源代码可是计算机不能识别和执行用汇编语言写成的程 序啊怎么办当然有办法我们可以通过翻译把源代码译成机器语言这个过程就叫做汇编,汇编工作现在 都是由计算机借助汇编程序自动完成的不过在很早以前它是靠手工来做的. 值得注意的是:汇编语言也是面向机器的,它仍是一种低级语言每一类计算机都有它自己的汇 编语言比如51 系列有它的汇编语言;PIC 系列也有它的汇编语言微机也有它自己的汇编语言它 们的指令系统是各不相同的也就是说不同的单片机有不同的指令系统它们之间是不通用的,这就
单片机入门不难------谈PIC系列
单片机入门不难------谈PIC系列 单片机入门不难------谈PIC系列 作者:佚名来源:不详录入:Admin更新时间:2008-7-2716:27:15点击数:3 【字体:】 单片机入门不难------谈PIC系列(转自矿石收音机论坛---崂山) 坛子里的老兄小弟,如果你已经多次想进单片机之门而未入,如果你有很多空闲时间想打发,如果你玩收音机感到疲劳想换个口味,如果。。。 那就听小弟我白话白话,反正我们这些老大难也没有什么重要的事情做。。。。 闲言少许,话说人间事物的学习,不外两类:一类入门易,精通难比如矿石机,再比如练书法谁都会写两下,可写好却不是一朝一夕的事儿。另一类则入门难精通易,比如超外差收音机,学会需要各种放大、振荡、反馈、混频、中频、统调等等,但是一旦你学会,做出一个高质量的收音机,确也不是难事。单片机属于后者,所以无论如何,你得用些时间,学习一些新名词并理解,甚至还得花一些小钱。但是,一旦你掌握,其乐趣也像收音机一样,很有吸引力的。本故事说给一点也不懂计算机,甚至数字电路的引引道。一般入门应该有保障。 改为:本故事说给懂电工、电子、逻辑电路的老家伙和半老家伙,如果对电子一窍不通人讲那我劝你也别瞎子点灯了,要是边讲基础边讲pic这书就不知唱到何年何月啦。 单片机不同于收音机,收音机的任务最终就是听好声音一个,单片机可以做很多事情,要你来安排它的工作。安排它就先的认识它,熟悉它 请看图1 这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。 第1、8条腿接电源+5V和地线。头两条腿是螃蟹钳子,好吃的很。现在剩下了6条腿 第2、3条腿使用时外接一个晶振的东西我们接一个4MHz的。 第4条腿是复位脚,是一个信号输入脚。单片机正常运行时接高电平。当有一个低电平脉冲输入到这个脚时单片机就复位。所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。例如,你设计的一个报警锁定的LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。 以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机
单片机考试试题带答案
单片机原理及应用试卷A 一、填空题(每空1分,共20分) 1、单片微型计算机由CPU、存储器和I/O 三部分组成。 PSEN信号有效时,表示从P0口稳定地送出了低8位地址。 2、MCS-51系统中,当 3、访问8031片外数据存储器采用的是寄存器间接寻址方式。 4、累加器(A)=80H,执行完指令ADD A,#83H后,进位位CY= 1 。 5、指令LCALL 37B0H,首地址在2000H,所完成的操作是2003H入栈,37B0H送入PC。 6、51有5个中断源,有2个中断优先级,优先级由软件填写特殊功能寄存器IP 加以选择。 7、在变址寻址方式中,以A作为变址寄存器,以PC或DPTR作基址寄存器。 8、中断请求信号有电平触发和脉冲触发两种触发方式 9、用串行口扩展并行口时,串行接口的工作方式应选为方式0。 10、74LS273通常用来作简单输出接口扩展;而74LS244则常用来作简单输入接口扩展。 11、51的并行I/O口信息有读引脚和读锁存器两种读取方法,读—改—写操作是针对并行I/O口内的锁存器进行的。 12、A/D转换器的三个重要指标是转换速度、分辨率和转换精度。 二、选择题(从备选答案中选择一个正确答案,并将代号写在括号内。每题1.分,共10分) 1、计算机能识别的语言是( C )。 (A)汇编语言(B)自然语言(C)机器语言(C)高级语言 2、MCS-51单片机外扩存储器芯片时,4个I/O口中用作数据总线的是( B )。 (A)P0和P2口(B)P0口(C)P2和P3口(D)P2口 3、在中断服务程序中,至少应有一条( D )。 (A)传送指令(B)转移指令(C)加法指令(D)中断返回指令 4、访问外部数据存储器时,不起作用的信号是( C )。
高手讲解PIC单片机:单片机的入门就是这么简单
高手讲解PIC单片机:单片机的入门就是这么简单 单片机入门不难,这是几年前的一篇老文章,讲得通俗易懂,分享给初学者。 这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。 第1、8条腿接电源+5V 和地线。头两条腿是螃蟹钳子,好吃的很。现在剩下了6 条腿 第2、3条腿使用时外接一个晶振的东西我们接一个4 MHz的。 第4条腿是复位脚,是一个信号输入脚。单片机正常运行时接高电平。当有一个低电平脉冲输入到这个脚时单片机就复位。所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。例如,你设计的一个报警锁定的LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。 以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机-----PIC12CE519 轮到第几条腿啦?奥,是第5条腿,这条叫单片机的I/O 脚。就是输入输出脚。你可通过程序动态地控制它作为输入或输出,作为输出时可以程序控制它的输出电平为高1或低0。所以,他的工作状态有四种:输入0,输入1,输出0,输出1,剩下的两条腿和第5脚功能一个样。 上边我们已经把8条腿消化掉了,其实我们要弄明白的也就3只腿,我们再简单一些,先整明白两条腿,即GP0,GP1.这两条腿低级一点的用法,可以控制继电器,LED灯,高级一些的用法可以进行I2C总线,RS232总线的通信,作为扩展输入可以模拟出来A/D转换器(6--7bit),可以测量一个电阻的粗略值。作为输出也可以直接推动扬声器奏出音乐。这是后话暂且不提。 现在要控制使用这两只腿,我这个三脚猫功夫的说书的不得不讲一下软件了,要想讲明白软件又不得不涉及到单片机的内部结构。那位说啦,你可别提这软件和结构了,以前俺就
河北科技大学单片机试题
河北科技大学2005——2006学年第2学期 《单片机原理及应用》期末考试试卷学院班级学号 一、填空(30分) 1. 8031系列单片机有个外部中断源,中断系统有级优先级。 2. 单片机复位结束时堆栈指针SP的内容是,P0口的内容是。 3. 8031有_____位地址总线,_____个全双工串行端口。 4. 在执行位操作指令时作为运算单元,它还有一个非常重要的作用,即指示运算结果。 5. 在MOVX DPTR, A 指令中源操作数是寻址方式;语句的功能是。 6.8031单片机扩展一片EPROM 2764,其输出允许端由单片机的读信号控制,这时EPROM 2764中的内容是____ 。 7.8031系列单片机选择片外程序时接低电平。 8.8031的I/O接口的输入指令为_______ 。 9.P1口7根独立的I/O线用于扩展键盘,最多可以管理个键。这时应该是工作方式。 10.单片机8031 接12MHZ的晶体振荡器,某定时器工作在方式1时,
最长的定时时间是微秒,如果要定时5微秒,定时器的初值是H。 11.8031无内部程序存储器,但具有___ __字节的寻址能力,可扩展最大为___ __字节的外部程序存储器。 12.E2PROM具有和的优点,所以可以作为数据存储器也可以用作程序存储器。 13.8031系列单片机的P0口比较特殊,它的内部,所以在作为I/O 线使用时必须。 14.RET指令和RETI的区别是。 15.ADD A,#22H和ADDC A,#22H两条指令的区别是,前者是 ,后者是。 二、选择(16分) 1. 串行口工作在方式1时适用于。 a有启停控制的字节传送b用串行口扩展并行输出口c多个单片机通讯d用串行口扩展并行输入口 2. 在取指令过程中,数据有效时一定无效。 a PSEN b读信号c地址线d INT0 3. 在读周期内数据有效时,总线上的内容是。 a CPU发出的b存储器或I/O接口发出的c不确定的d高阻态
单片机基于C语言的编程程序
#include
单片机复习提纲1
单片机复习提纲 一、项目准备篇(一)C51语言及语法 1. 数据类型 (1)常用数据类型名称、占用字节数、取值范围。如:char型 1字节 -128~+127 int型 2字节 -32768~+32767等。 (2)sbit类型和bit类型的区别:前者可以定义特殊功能寄存器中的位,后者用于定义51单片机内部位地址空间中的位。如: sbit P1_1=P1^1; bit flag; 2. 变量定义和作用域 (1)变量必须先定义后使用,变量的定义格式;(2)变量的作用域: 全局变量:在函数外部定义,函数可以用全局变量传递多个数据结果; 函数中用return只能传递一个数据结果。 局部变量:在函数内部定义,函数外部不可见。(3)关键字的概念 例:下列标识符中哪些是C51编程时使用的关键字?
A、integer B、define C、break D、sbit 3. C51语言运算符 要求对常用运算能熟练掌握。 例题: (1)a=0xff,b=0x07, a | b = ? 2)i=1234, k=i%10, k=? (3)设x=0x81,x=x<<2,x=0x04 (4)a=0x77,b=0x99, a & b =0x11 (5)P1=~0x11,P1= 0xEE (6)a1=0xff,y = !a1, y= 1 (7)tmp=0x15,tmp=tmp>>4,tmp= 0x01 (8)x=0x80,y=0x7f, 则x && y = 1 (9)a=0x1f,b=0x01,c = a + a||b + b%10= ? c = a + (a||b) + (b%10)= 0x30 (10)i=0x21, y = --i ,y = i =0x21;i--;y=i; (11)i=0x21,y=i--,y=? i =0x21;y=i; i--; 重点关注:/,%,++,--(++,--放在变量前与后之间的区别),按位运算,以及关系和逻辑运算
从单片机初学者迈向单片机工程师
这个我从eehome贴过来的。写的非常的好。我们用学单片机不要停在演示的基础上。只能让单片机完成局部事。这样我们永远不会走出流水灯地狱!!! 学习单片机也已经有几年了,藉此机会和大家聊一下我学习过程中的一些经历和想法吧。也感谢一线工人提供了这个机会。希望大家有什么好的想法和建议都直接跟帖说出来。毕竟只有交流才能够碰撞出火花来^_^。 。“卖弄”也好,“吹嘘”也罢,我只是想认真的写写我这一路走来历经的总总,把其中值得注意,以及经验的地方写出来,权当是我对自己的一个总结吧。而作为看官的你,如果看到了我的错误,还请一定指正,这样对我以及其它读者都有帮助,而至于你如果从中能够收获到些许,那便是我最大的欣慰了。姑妄言之,姑妄听之。如果有啥好的想法和建议一定要说出来。 几年前,和众多初学者一样,我接触到了单片机,立刻被其神奇的功能所吸引,从此不能自拔。很多个日夜就这样陪伴着它度过了。期间也遇到过非常多的问题,也一度被这些问题所困惑……等到回过头来,看到自己曾经走过的路,唏嘘不已。经常混迹于论坛里,也看到了很多初学者发的求助帖子,看到他们走在自己曾走过的弯路上,忽然想到了自己的那段日子,心里竟然莫名的冲动,凡此总总,我总是尽自己所能去回帖。很多时候,都想写一点什么东西出来,希望对广大的初学者有一点点帮助。但总是不知从何处写起。今天借一线工人的台,唱一唱我的戏 一路学习过来的过程中,帮助最大之一无疑来自于网络了。很多时候,通过网络,我们都可以获取到所需要的学习资料。但是,随着我们学习的深入,我们会慢慢发现,网络提供的东西是有限度的,好像大部分的资料都差不多,或者说是适合大部分的初学者所需,而当我们想更进一步提高时,却发现能够获取到的资料越来越少,相信各位也会有同感,铺天盖地的单片机资料中大部分不是流水灯就是LED,液晶,而且也只是仅仅作功能性的演示。于是有些人选择了放弃,或者是转移到其他兴趣上面去了,而只有少部分人选择了继续摸索下去,结合市面上的书籍,然后在网络上锲而不舍的搜集资料,再从牛人的只言片语中去体会,不断动手实践,慢慢的,也摸索出来了自己的一条路子。当然这个过程必然是艰辛的,而他学会了之后也不会在网络上轻易分享自己的学习成果。如此恶性循环下去,也就不难理解为什么初级的学习资料满天飞,而深入一点的学习资料却很少的原因了。相较于其他领域,单片机技术的封锁更加容易。尽管已经问世了很多年了,有价值的资料还是相当的欠缺,大部分的资料都是止于入门阶段或者是简单的演示实验。但是在实际工程应用中却是另外一回事。有能力的高手无暇或者是不愿公开自己的学习经验。 很多时候,我也很困惑,看到国外爱好者毫不保留的在网络上发布自己的作品,我忽然感觉到一丝丝的悲哀。也许,我们真的该转变一下思路了,帮助别人,其实也是在帮助自己。啰啰嗦嗦的说了这么多,相信大家能够明白说的是什么意思。在接下来的一段日子里,我将会结合电子工程师之家举办的主题周活动写一点自己的想法。尽可能从实用的角度去讲述。希望能够帮助更多的初学者更上一层楼。而关于这个主题周的最大主题我想了这样的一个名字“从单片机初学者迈向单片机工程师”。名字挺大挺响亮,给我的压力也挺大的,但我会努力,争取使这样的一系列文章能够带给大家一点帮助,而不是看后大跌眼镜。这样的一系列文章主要的对象是初学者,以及想从初学者更进一步提高的读者。而至于老手,以及那些牛XX的人,希望能够给我们这些初学者更多的一些指点哈~@_@ 我们首先来看第一章节
单片机复习题纲
单片机复习提纲 一.选择题: 1.MC-51单片机复位后,程序计数器PC的内容是。 A.00H B.FFH C.0000H D.FFFFH 2.8031单片机芯片要使用时应把EA信号引脚。 A.接高电平B.接地C.悬空D.接地址锁存器选通端 3.MCS-51的程序计数器PC为16位计数器,因此其寻址范围是。 A.8K B.16K C.32K D.64K 4.在MCS-51单片机中,唯一一个可供用户使用的16位寄存器是。A.PSW B.DPTR C.AC D.PC 5.在MCS-51单片机中,唯一一个用户不能直接使用的寄存器是。A.PSW B.DPTR C.AC D.PC 6.在单片机中,用作标志寄存器的一个特殊功能寄存器是。 A.PSW B.DPTR C.AC D.PC 7.单片机的指令地址存放在中。 A.PSW B.DPTR C.SP D.PC 8.提高单片机的晶振频率,则机器周期信号。 A.不变B.变长C.变短D.变长变短不定 9.用2114(1K×4)芯片扩展8KB的数据存储器需要芯片。 A.4片B.8片C.12片D.16片 10.地址空间3000H~37FFH共有存储单元。 A.1K B.2K C.4K D.8K 11.使用线选法扩展3片2732(4KB)作外部程序存储器,需要使用位地址线。A.13 B.14 C.15 D.16 13.8031单片机系统扩展时使用的锁存器用于锁存。 A.高8位地址B.低8位地址C.8位数据D.ALE信号 14.在M C S-51单片机的中断中,如果出现同级中断申请时,就按硬件查询序列来处理响应次序,其优先级别中第三个为:() A、定时/计数器中断0 B、定时/计数器中断1 C、外部中断0 D、外部中断1 E、串行口中断15.MSC-51在响应中断时,必须由用户清除的标志为() A、TF0 B、RI C、IE0 D、TF1 16.设(A)=F0H,若执行4次指令RL A ,则执行完后,A 中的内容为:() A、FFH B、00H C、0FH D、F0H 17.乘法指令是MCS-51单片机中执行时间最长的指令之一,当执行完MUL AB 后,积的高8位在:() A、在寄存器A中 B、在寄存器B中 C、在Cy中 D、在PSW中 18.设执行ADD 指令后,A 中的内容为10011010B ,再执行DA A 指令后,A 的内容应为() A、10100000 B、10010000 C、00010000 D、00000000 19.设A=56H,R0=20H,(20H)=7AH,若执行XCHD A,@R0, 则A 中的内容为:() A、76H B、A6H C、5AH D、50H 20.执行PUSH direct 指令时,SP 将进行何种操作?() A、SP + 0 B、SP + 1 C、SP + 2 D、SP - 1 21.8031不具有第二功能的I/O口是:() A、P0 口 B、P1口 C、P2口 D、P3口 22.下列哪一个指令助记符是非法字符?() A、RLC B、CLR C、RRC D、ORC
超易单片机入门(小学生都能看得懂的PIC教程)
超易单片机入门(学单片机一定要看) ( 向作者致敬!) 一. 话说人间事物的学习,不外两类:一类入门易精通难,比如矿石机,再比如练书法谁都会写两下,可写好却不是一朝一夕的事儿。另一类则入门难精通易,比如超外差收音机,学会需要各种放大、振荡、反馈、混频、中频、统调等等,但是一旦你学会,做出一个高质量的收音机,确也不是难事。单片机属于后者,所以无论如何,你得用些时间,学习一些新名词并理解,甚至还得花一些小钱。但是,一旦你掌握,其乐趣也像收音机一样,很有吸引力的。 单片机不同于收音机,收音机的任务最终就是听好声音一个,单片机可以做很多事情,要你来安排它的工作。安排它就先的认识它,熟悉它。大家自己查看一下单片机的外形,不妨将它看成是一个8条腿的小螃蟹,这个8条腿的小螃蟹就是我们的第一顿饭,只要把它吃下去,以后的大餐就好办了。 第1、8条腿接电源 +5V和地线。头两条腿是螃蟹钳子,好吃的很。现在已经剩下6条腿了。 第2、3条腿使用时外接一个叫作晶振的东西,我们接一个4MHz的晶振(这还不知道?还是看一下:单片机之路(https://www.360docs.net/doc/c415961856.html,)里面对晶振的介绍吧)。 第4条腿是复位脚,是一个信号输入脚。单片机正常运行时接高电平。当有一个低电平脉冲输入到这个脚时单片机就复位。所谓复位就是单片机内部所有的工作部件统统回到规定的状态,程序也复位到头一句上开始逐条运行。例如,你设计的一个报警锁定的LED红灯亮后,当需要解除报警时,用一个按钮给这个脚瞬时接地一下,相当于给它一个夫脉冲,系统就复位了,led灯就熄灭了,程序从头开始。 以上5个脚,几乎所有单片机都有,包括世界上最复杂的,和世界比较简单的单片机-PIC12CE519。 轮到底几条腿啦?奥,是第5条腿,这条叫单片机的I/O脚。就是输入输出脚。你可通过程序动态地控制它作为输入或输出,作为输出时可以程序控制它的
(华南理工大学)单片机试题2
二、填空题(每题2分,共20分) 1. 80C51单片机主要由CPU系统、、组成。 2. 在寄存器间接寻址中,其“间接”体现在指令中寄存器的内容不是操作数,而是操作数的。 3. 指令ADD A,#55H的源操作数属于__________寻址方式,其功能是 _____________ 。 4. 在80C51系列单片机中数据指针寄存器DPTR由和两个寄存器组成。 5. 89C51使用片内ROM时,其芯片引脚要接电平。 6. 80C51的外部中断请求有两种触发方式,一种是触发,另一种是触发。 7. 若A中的内容为87H,那么标志位P的值为。 8. D/A转换的作用是将量转换为量。 9. 串行通信的接口标准包括、和RS--485三种。 10. 共阳极8段LED显示器显示字符“0”的段代码是。 三、简答题(每题5分,共15分) 1. 单片机有哪些特点举出3个实际应用的例子。 2. 基本程序结构有哪几种 3. 80C51中断优先级分为几级响应中断的基本条件是什么? 四、阅读并分析程序( 每题5分,共15分)。 1. 若(20H)=4,执行下列程序后,21H中的内容是多少? MOV DPTR , #1000H MOV A , 20H MOVC A , @A+DPTR MOV 21H , A SJMP $ ORG 1000H TABLE: DB 00 , 01 , 04 , 09 , 16 , 25 END 2. 若CY=1,(P1)=B,指出执行下列程序后,CY和P1口的内容。
MOV , C MOV , C MOV C, END 3. 说明下列程序的功能 MOV R2,#10H MOV R0 , #60H CLR A LOOP:MOV @R0,A INC R0 DJNZ R2,LOOP END 五、编程计算题(每题4分,共20分)。 (计算题要求写出步骤,注明单位,如果结果错误步骤正确,可适当给分。) 1. 寄存器R0和R1的内容相加,结果存入R2。 2. 将片内RAM 30H~3FH的内容传送到片外2000H~200FH中去。 3. 80C51系统中,当(SP)=60H时,执行“PUSH 50H”指令后,SP的值为多少? 4. 单片机用内部定时方法产生频率为100 Hz 等宽矩形波,由输出。假定单片机的晶振频率为12MHz。请计算定时器初值。 5. 某异步通信接口,其帧格式由1个起始位,7个数据位,1个奇偶校验位和1个停止位组成。当该接口每分钟传送1800个字符时,试计算出传送波特率 六、系统设计题(10分) 设计一个89C51单片机的简单应用系统。 要求:①扩展8KB外部数据存储器,请选择芯片; ②画出系统逻辑电路图,标明相应的总线关系; ③写出数据存储器的地址范围。(必须与逻辑电路一致。) *************************************************** **************************************************
大学单片机考试试题终极版
单片机原理及应用考试试题(A卷) 一、填空题(15分) 1.使用8KB×8的RAM芯片,用译码法扩展32KB×8的外部存储器,需要( 4 ) 片存储芯片,共需要( 15)条地址线。其中( 13)条用于存储单元选择,( 2 )条用于芯片选择。 2.设二进制数A=,B=0110110。则逻辑运算A∧B=(0010 0100 ),A∨B= ( 1011 1111),A⊕B=( 1001 1011 )。 3.向8255写入的工作方式命令为0A5H,所定义的工作方式是:A口是(输 出),B口是(输出),C口高位部分是(输出),C口低位部分是(输入)。 4.80C51单片机中,一个机器周期包含(6 )个状态周期,一个状态周期 又可划分为( 2)个节拍,一个节拍为( 1 )个振荡周期,因此,一个机器周期包含( 12 )个振荡周期。 5.三态缓冲器的三态分别是(高电平)、(低电平)和(高阻)。 6.串行异步通信,传送速率为2400b/s,每帧包含1个起始位,7个数据位, 1个奇偶校验位和一个停止位,则每秒传送字符数为( 240 )。 7.单片机上电复位后,各中断优先级从高到低的次序是( INT0 )、(T0 )、 (INT1 )、( T1)和(串行中断)。 8.定时器0工作于方式2的计数方式,预置的计数初值为156,若通过引脚 T0输入周期为1ms的脉冲,则定时器0的定时时间为(100mS )。 9.假设累加器A的内容为30H,执行指令“1000H:MOVC A,@A+PC”后,会 把存储器(1032H)单元的内容送累加器A中。 10.十进制24对应的二进制数表示为(0001 1000 ),十六进制数表示为 ( 18H ),BCD码表示为(0010 0100 );-24的补码表示为(1110 1000 )。 二、选择题(20分) 1.在共阴极静态LED显示电路中,D0~D7分别对应a~dp,若使某位LED显示一个3,则应向此位LED传送的段码数字量是( B),若将其改为共阳极静态LED显示电路,则应向此位LED传送的段码数字量是(C ) A、3FH B、4FH C、B0H D、CFH 2.取指操作后,PC的值是( C ) A.当前指令前一条指令的地址 B. 当前正在执行指令的地址 C. 下一条指令的地址 D.控制器中指令寄存器的地址 3.设置堆栈指针SP=30H后,进行一系列堆栈操作。当堆栈数据全部弹出后,SP应指向( A) A.30H单元单元单元单元
教你如何用C++写单片机程序
教你如何用C++写单片机程序 关键词:C++ 面向对象单片机 从大一就开始学习单片机,学51,A VR编程都使用C语言的风格,即面向过程,只要能画出程序流程图,程序基本就born了。我热衷于编程,尤其是C++,当时想有没有一天,C++的类和对象也能出现在单片机中? 历经世事沧桑,事到如今,我终于有机会,和大家一起学习使用真正面向对象的C++来控制单片机。目前单片机编译器大部分只支持C语言,C++还不够普及,但我们有理由相信,有着更先进的面向对象的理念,有更加平易近人的类和继承,C++必将取代C,成为单片机程序的主流。试看将来环球单片机,必是C++的世界! 下面大家跟着我来一起学习怎么用C++给单片机编程序!本文要求大家玩过A VR单片机,有过C语言编程经验,而且要对VC6.0开发环境有一定了解。 必备软件:VC6.0(用于编辑源程序),WinA VR(用于生成Makefile,支持A VR系列单片机),Proteus(用于仿真调试)。 首先,你的电脑上要装有VC6.0,进入后选菜单【file】---【new】新建工程,如图1选择Makefile工程,输入工程名称,路径,点确定。 图1_新建工程 一路OK建好工程,界面如图2。这个工程是专门写makefile脚本的,你如果学A VR单片机使用avr-gcc那应该对makefile有一定了解,如果想多了解一点详见https://www.360docs.net/doc/c415961856.html,/view/974566.html?wtp=tt(呵呵,百度百科)。 你还需要安装WINA VR,这是个免费软件,网上很多资源,这个软件很容易安装,一路Next 就可以啦!为了使用方便,我的WINAVR安装到了C盘根目录下的WINA VR文件夹。安装好后,可以直接用它来编辑源代码,今天我就不讲它的使用方法了,只讲怎么生成makefile。自我感觉用熟悉的VC6.0环境编写程序心情很愉快,大家还是跟我一起来,打造
从单片机初学者迈向单片机工程师_完整.doc
目录: KEY篇第一章----按键程序编写的基础 KEY篇第二章----基于状态转移的独立按键程序设计 LED篇第三章—模块化编程初识 LED篇第四章----渐明渐暗的灯 LED篇第五章----多任务环境下的数码管编程设计 我们用学单片机不要停在演示的基础上。只能让单片机完成局部事。这样我们永远不会走出流水灯地狱! !! 学习单片机也已经有几年了,藉此机会和大家聊一下我学习过程中的一些经历和想法吧。也感谢一线工人提供了这个机会。希望大家有什么好的想法和建议都直接跟帖说出来。毕竟只有交流才能够碰撞出火花来 几年前,和众多初学者一样,我接触到了单片机,立刻被其神奇的功能所吸引,从此不能自拔。很多个日夜就这样陪伴着它度过了。 期间也遇到过非常多的问题,也一度被这些问题所困惑……等到回过头来, 看到自己曾经走过的路,唏嘘不已。经常混迹于论坛里,也看到了很多初学者发的求助帖子,看到他们走在自己曾走过的弯路上,忽然想到了自己的那段日子,心里竟然莫名的冲动,凡此总总,我总是尽自己所能去回帖。很多时候,都想写一点什么东西出来,希望对广大的初学者有一点点帮助。但总是不知从何处写起。今天借一线工人的台,唱一唱我的戏。卖弄”也好,吹嘘”也罢,我只是想认真的写写我这一路 走来历经的总总,把其中值得注意,以及经验的地方写出来,权当是我对自己的一个总结吧。而作为看官的你,如果看到了我的错误,还请一定指正,这样对我以及其它读者都有帮助,而至于你如果从中能够收获到些许,那便是我最大的欣慰了。姑妄言之,姑妄听之。如果有啥好的想法和建议一定要说出来。 一路学习过来的过程中,帮助最大之一无疑来自于网络了。很多时候,通过网络,我们都可以获取到所需要的学习资料。但是,随着我们学习的深入,我们会慢慢发现,网络提供的东西是有限度的,好像大部分的资料都差不多,或者说是适合大部分的初学者所需,而当我们想更进一步提高时,却发现能够获取到的资料越来越少,相信各位也会有同感,铺天盖地的单片机资料中大部分不是流水灯就是 LED,液晶, 而且也只是仅仅作功能性的演示。于是有些人选择了放弃,或者是转移到其他兴趣上面去了,而只有少部分人选择了继续摸索下去,结合市面上的书籍,然后在网络上锲而不舍的搜集资料,再从牛人的只言片语中去体会,不断动手实践,慢慢的,也摸索出来了自己的一条路子。当然这个过程必然是艰辛的,而他学会了之后也不会在网络上轻易分享自己的学习成果。如此恶性循环下去,也就不难理解为什么初级的学习资料满天飞,而深入一点的学习资料却很少的原因了。相较于其他领域,单片机技术的封锁更加容易。尽管已经问世了很多年了,有价值的资料还是相当的欠缺,大部分的资料都是止于入门阶段或者是简单的演示实验。但是在实际工程应用中却是另外一回事。有能力的高手无暇或者是不愿公开自己的学习经验。 很多时候,我也很困惑,看到国外爱好者毫不保留的在网络上发布自己的作品,我忽然感觉到一丝丝的悲哀。也许,我们真的该转变一下思路了,帮助别人,其实也是在帮助自己。啰啰嗦嗦的说了这么多,相信大家能够明白说的是什么意思。在接下来的一段日子里,我将会结合电子工程师之家举办的主题周活动写一点自己的想法。尽可能从实用的角度去讲述。希望能够帮助更多的初学者更上一层楼。而关于这个主题周的最大主题我想了这样的一个名字从单片机初学者迈向单片机工程师”。名字挺大挺响亮,给我的 压力也挺大的,但我会努力,争取使这样的一系列文章能够带给大家一点帮助,而不是看后大跌眼镜。这样的一系列文章主要的对象是初学者,以及想从初学者更进一步提高的读者。而至于老手,以及那些牛XX 的人,希望能够给我们这些初学者更多的一些指点哈?@_@ 我们首先来看第一章节