求飞思卡尔单片机mc9s12xe学习资料,一定要有简单的小程序实例,像流水灯液显示等等,要c语言写的

求飞思卡尔单片机mc9s12xe学习资料,一定要有简单的小程序实例,像流水灯液显示等等,要c语言写的,第1张

我用了2年多的MC9S12,比较熟悉,建议你看孙同景编的《FREESCALE S12十六位单片机原理及嵌入式开发技术》,直接从后面的IO接口看起,多练习例程 很快就会熟练的
流水灯的程序何其简单

这个需要看单片机的具体型号
指令不同,执行的时间也是不同啊
看看 指令需要几个机器周期啊
========================================
如果有不详细的地方,请继续提问!
软件开发(VB / VC++/PLC/组态软件)、单片机设计
松下伺服 PLC:
松下伺服:
MHMD082G1U+MCDHT3520
MHMD042G1U+MBDHT2510
西门子 触摸屏 PLC 变频器:
CPU224 CPU226 CPU313 CPU314 CPU315, SMART 1000
PRO-FACE触摸屏:
三菱 PLC: FX1N FX2N /

编程实现对 8 个 LED 的输出控制 将实验箱中的 8255 片选信号连接到 218H~21FH,将 8255 的 4 个寄存器地址(A、B、 C 端口及控制字寄存器端口)设置为 218H~21BH。将 8255 的端口 A 的 8 个引脚:PA0~PA7 与 8 个 LED 对应相连,然后打开实验箱电源,最后编程对 8 个 LED 进行显示控制。
程序清单:
CODE SEGMENT
ASSUME CS:CODE
START: MOV DX,21BH
MOV AL,80H
OUT DX,AL ;工作方式初始化
MOV DX,218H
MOV AL,0FEH ;设置输出数据,即显示模式
MOV CX,80 ;设置循环次数
LN: OUT DX,AL
ROL AL,1
CALL DELAY ;调用延迟程序
LOOP LN
MOV AH,4CH
INT 21H ;返回 dos
DELAY PROC ;延迟子程序
PUSH CX
MOV BX,2000
A0: MOV CX,3000
A1: LOOP A1
DEC BX
JNZ A0
POP CX
RET DELAY
ENDP
CODE ENDS
END START。吴鉴鹰单片机开发板。
从刚开始接触单片机,到现在已经有4年的时间了,在这期间学习和使用了51单片机、飞思卡尔单片机,LPC2138,PIC16F887等系列的单片机,每接触一款单片机,都会经历熟悉其基本开发,然后将其用于项目中的过程,对于如何学习一款单片机,自己做了如下的总结。
大家都知道,51单片机是最容易入门的,不仅因为其编程简单,更重要的是网上的资料非常丰富。所以一般学习单片机开发的都将51单片机作为入门开发的首选。我学习51单片机的时候是采用这样的一个步骤进行学习的:
第一步(熟悉的过程):买了一款51单片机开发板,然后就开始了我的学习之旅,刚开始的时候没有去看视频教程,而是对着一本实验教材进行学习,那本实验教材的名字记不清楚了,但是其内容就是围绕单片机的LED灯进行控制,将51单片机内部的各个功能部件全部都使用到了,这样就能使我在很短的时间内,通过控制LED灯的亮、灭熟悉了51单片机的内部的各种资源,这时对51单片机也就没有感到陌生了。所以,个人觉得,学习单片机,要从实验入手,先熟悉单片机再说,开发语言开始使用的是C语言。
第二步(进阶的过程):有了第一步的基础之后,接下来的便是进阶的过程,当时,我看的是郭天祥十天学会单片机的视频教程,因为这个教程从基础到复杂的编程慢慢深入,讲的比较的全面,而且也生动,所以那一阶段,也是我学习单片机进步最快的阶段,每次听课的时候,按照上面的实验,以及课堂上面调试程序时出现的一些问题,自己认真的在电脑上进行调试,并分析产生故障的原因,让我有了一定的开发基础。在看完了视频教程之后,后面又对基础的知识进行了下补习,主要是看单片机原理性的教材,因为有些细节性的东西还是要从教材上面获得。

LDX 70H,X ; H:X=(0F00H),(0070H)=(0FH)
说明:LDX 70H,X 指令将将内存地址为 70H 和 71H 的两个字节中的值作为 X 寄存器的初始值,因此,X=0F00H,(0070H)=0FH。

PSHX ; H:X=(0F00H), SP=(00FDH), (SP)=00H
说明:PSHX 指令将 X 寄存器的值压入堆栈中,同时 SP 寄存器减 2,因此,SP=00FDH,(SP)=0FH。

STA 70H ; (0070H)=0FFH, A=0FFH
说明:STA 70H 指令将 A 寄存器中的值 0FFH 存储到内存地址 70H 中,因此,(0070H)=0FFH,A=0FFH。

PULA ; A=0FH, SP=00FFH
说明:PULA 指令将堆栈中的值d出到 A 寄存器中,同时 SP 寄存器加 2,因此,A=0FH,SP=00FFH。在执行 PULA 指令后,堆栈中原来的值已经被d出,堆栈中不再有值。

以下是更详细的步骤说明:

初始状态:

SP = 00FFH ; 栈顶指针初始化为 00FFH
A = 0FFH ; 寄存器 A 初始化为 0FFH
H:X = 0000H ; 寄存器 H:X 初始化为 0000H
(0070H) = 0FH ; 内存地址 0070H 中的值为 0FH

执行指令 "LDX 70H,X":

LDX 70H,X ; 将内存地址 70H 和 71H 中的值 0FH 和 00H 组成的字作为 X 寄存器的初始值
; 因此 X = 0F00H,(0070H) = 0FH

执行指令 "PSHX":

PSHX ; 将 X 寄存器的值 0F00H 压入堆栈中
; SP = 00FDH,(00FDH) = 00H,(00FEH) = 0FH

执行指令 "STA 70H":

STA 70H ; 将 A 寄存器的值 0FFH 存储到内存地址 70H 中
; (0070H) = 0FFH,A = 0FFH

执行指令 "PULA":

PULA ; 将堆栈中的值d出到 A 寄存器中
; SP = 00FFH,A = 0FH

最终状态:

SP = 00FFH      ; 堆栈指针指向空闲位置

A = 0FH         ; 寄存器 A 中的值为 0FH

H:X = 0F00H     ; 寄存器 H:X 中的值为 0F00H

(0070H) = 0FFH  ; 内存地址 0070H 中的值为 0FFH

// ---------------------------------ADC0-------------------------
ADC0_DP0,
ADC0_DP1,
PGA0_DP, //不支持ADC,需要配置 ADC PGA register 设置放大增益
ADC0_DP3,
//软件触发不支持B通道
ADC0_SE4b, // PTC2 不支持软件ADC
ADC0_SE5b, // PTD1 不支持软件ADC
ADC0_SE6b, // PTD5 不支持软件ADC
ADC0_SE7b, // PTD6 不支持软件ADC
ADC0_SE8, // PTB0
ADC0_SE9, // PTB1
ADC0_SE10, // PTA7
ADC0_SE11, // PTA8
ADC0_SE12, // PTB2
ADC0_SE13, // PTB3
ADC0_SE14, // PTC0
ADC0_SE15, // PTC1
ADC0_SE16, // ADC0_SE16
ADC0_SE17, // PTE24
ADC0_SE18, // PTE25
ADC0_DM0, // ADC0_DM0
ADC0_DM1, // ADC0_DM1
RES0, // 保留
RES1, // 保留
DAC0_OUT, // DAC0输出 不支持ADC
RES2, // 保留
RES3, // 保留
Temp0_Sensor, // Temperature Sensor,内部温度测量,可用ADC函数
Bandgap0, // 温度补偿结构带隙基准源 不支持ADC
RES4, // 保留
VREFH0, // 参考高电压,可用ADC函数 ,结果恒为 2^n-1
VREFL0, // 参考低电压,可用ADC函数 ,结果恒为 0
Module0_Dis, // 不支持 ADC
// ---------------------------------ADC1-------------------------
ADC1_DP0,
ADC1_DP1,
PGA1_DP, // 不支持 ADC
ADC1_DP3,
ADC1_SE4a, // PTE0
ADC1_SE5a, // PTE1
ADC1_SE6a, // PTE2
ADC1_SE7a, // PTE3
ADC1_SE4b = ADC1_SE4a, // PTC8 不支持软件ADC ,传递 ADC1_SE4b 到软件ADC函数里,会当作 ADC1_SE4a 处理。
ADC1_SE5b = ADC1_SE5a, // PTC9 不支持软件ADC
ADC1_SE6b = ADC1_SE6a, // PTC10 不支持软件ADC
ADC1_SE7b = ADC1_SE7a, // PTC11 不支持软件ADC
ADC1_SE8, // PTB0
ADC1_SE9, // PTB1
ADC1_SE10, // PTB4
ADC1_SE11, // PTB5
ADC1_SE12, // PTB6
ADC1_SE13, // PTB7
ADC1_SE14, // PTB10
ADC1_SE15, // PTB11
ADC1_SE16, // ADC1_SE16
ADC1_SE17, // PTA17
VREF_OUTPUT, // VREF Output
ADC1_DM0, // ADC1_DM0
ADC1_DM1, // ADC1_DM1
RES5, //保留
RES6,
DAC1_OUT,
RES7, //保留
RES8,
Temp1_Sensor,
Bandgap1, // 温度补偿结构带隙基准源 不支持ADC
RES9,
VREFH1, // 参考高电压,可用ADC函数 ,结果恒为 2^n-1
VREFL1, // 参考低电压,可用ADC函数 ,结果恒为 0
Module1_Dis, // 不支持 ADC
、、、、、、、、、、、、、、、、
/!
COPYRIGHT NOTICE
Copyright (c) 2013,山外科技
All rights reserved
技术讨论:山外论坛 >

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13388626.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-26
下一篇 2023-07-26

发表评论

登录后才能评论

评论列表(0条)

保存