下面是修改的代码。你注意注释部分:
ORG 0000H
JMP START
ORG 13H //这里要改,因为it0和it1的中断向量表地址不同,这个地方要
//看你的单片机类型,51的话,就不是13这数值,你看看你的
//it0的中断起始地址应该是什么,把13H改了。
JMP INT_0 //改为INT_0
START: MOV IE,#10000100B //IE也需要改,设置中断控制寄存器:
//改为MOV IE,#01001000B
MOV SP,#30H
SETB IT1 //这里要改为SETB IT0
MOV A,#01010101B
LOOP: MOV P0,A
CALL DELAY
CPL A
JMP LOOP
INT_0: PUSH PSW
PUSH ACC
SETB RS0
MOV R0,#3
INT_LOOP:MOV A,#0FEH
MOV R1,#7
INT_LOOPL:MOV P0,A
CALL DELAY
RL A
DJNZ R1,INT_LOOPL
MOV R1,#7
INT_LOOPR:MOV P0,A
CALL DELAY
RR A
DJNZ R1,INT_LOOPR
DJNZ R0,INT_LOOP
POP ACC
POP PSW
RETI
DELAY: MOV R7,#200
D1: MOV R6,#250
DJNZ R6,$
DJNZ R7,D1
RET
END
需要改的就这几个地方,希望你看看。因为你没有具体的限制是什么类型的单片机,这样的话,指令和中断地址就不能非常具体的给你改。你结合我的提示,改改吧。
我那时候用的是吴鉴鹰单片机开发板,各方面还是不错的。
从刚开始接触单片机,到现在已经有4年的时间了,在这期间学习和使用了51单片机、飞思卡尔单片机,LPC2138,PIC16F887等系列的单片机,每接触一款单片机,都会经历熟悉其基本开发,然后将其用于项目中的过程,对于如何学习一款单片机,自己做了如下的总结。
大家都知道,51单片机是最容易入门的,不仅因为其编程简单,更重要的是网上的资料非常丰富。所以一般学习单片机开发的都将51单片机作为入门开发的首选。我学习51单片机的时候是采用这样的一个步骤进行学习的:
第一步(熟悉的过程):买了一款51单片机开发板,然后就开始了我的学习之旅,刚开始的时候没有去看视频教程,而是对着一本实验教材进行学习,那本实验教材的名字记不清楚了,但是其内容就是围绕单片机的LED灯进行控制,将51单片机内部的各个功能部件全部都使用到了,这样就能使我在很短的时间内,通过控制LED灯的亮、灭熟悉了51单片机的内部的各种资源,这时对51单片机也就没有感到陌生了。所以,个人觉得,学习单片机,要从实验入手,先熟悉单片机再说,开发语言开始使用的是C语言。
第二步(进阶的过程):有了第一步的基础之后,接下来的便是进阶的过程,当时,我看的是郭天祥十天学会单片机的视频教程,因为这个教程从基础到复杂的编程慢慢深入,讲的比较的全面,而且也生动,所以那一阶段,也是我学习单片机进步最快的阶段,每次听课的时候,按照上面的实验,以及课堂上面调试程序时出现的一些问题,自己认真的在电脑上进行调试,并分析产生故障的原因,让我有了一定的开发基础。在看完了视频教程之后,后面又对基础的知识进行了下补习,主要是看单片机原理性的教材,因为有些细节性的东西还是要从教材上面获得。
第三步(项目实战的阶段):学习单片机的时候,虽然也编写了一些程序,但是那些都是一些很小的模块程序,并没有起到综合应用的目的,所以在这之后,我和另外一个学习硬件的同学一起组成了一个小的团队,进行项目实践开发,那时候,实验室的条件比价好,有很多的器件可以自己使用。所以,我们就设计了我们的第一个作品,基于单片机的液体点滴监控系统。做这个系统时,就将以前单片机所学的知识,做了一个综合的应用,包括有LCD1602控制,串口的控制等。
经过以上三个步骤的学习之后,对于51单片机的开发基本上就算入门了。而对于其他类型的单片机,如飞思卡尔单片机,LPC2148 ARM7单片机,PIC16F887等,虽然每个系列的功能不一样,但是最基本的编程思想还是一样的,不同的可能就是编译器,程序下载的软件等差别,所以有了51单片机的开发基础之后,学习其他单片机所采用的方法就是一个差异化的学习,学习各种单片机不同的地方,这样,就能很快的熟悉一款新的型号的单片机。
如在学习PIC16F887这个系列的单片机时,我首先做的工作不是去阅读数据手册,而是先拿着DEMO代码,在编译软件中编译、链接、生成HEX文件,然后将其下载到开发板中跑起来,这个过程主要就是学习其软件的基本 *** 作,有了这个基础之后,就能自己进行编程、测试。之后就是熟悉其编程的模式,所谓其编程模式,就是寄存器的控制,中断程序的编写,熟悉了这个 *** 作,也就能控制其他的功能模块了,如串口的控制、I2C硬件控制器的控制。这些基本的开发熟悉了之后,接下来便是学习差异的部分,例如PIC单片机C语言中,其堆栈深度不能超过8级,超过了之后,将会使得程序出现跑飞的现象。而且内存的分配完全要靠自己来控制,分成了4个BANK的数据,BANK0,BANK1,BANK2,BANK3 等。这些就是每个系列单片机所独有的一些东西,这些东西需要详细的了解,因为它们可能为你的编程带来很大的便利。
以上就是我学习单片机的总结,如果大家有更好的学习方法,希望大家能够提出来,一起讨论,共同进步。
INT0/1为1下降沿触发 为0电平触发 ,而下降沿触发IE0和IE1可以自动清零,而电平触发得人为把IE0和IE1清零,要不然会一直启动中断。IE0/1可以自动清零,所以一般用下降沿触发
1T、6T、12T这个原本叫
机械周期,现在更多人称为
指令周期;以前标准51单片机,是12T模式的。后来大量单片机厂家的介入,开始对单片机进行提速,于是就出现了
6T、1T模式的单片机。
时钟周期:是指振荡源的周期,如
外部晶振
10MHz(假设有),那么它的时钟周期就是
1/10MHz=01us;
机械周期:单片机执行一单位指令所需要的
时钟周期
个数,如
1T,就表示,需要
1个时钟周期;12T
即为
12个时钟周期。这些都只是
一单位指令的时间(如自增、自减等),多单位指令时间进行倍乘(如赋值语句需要2个机械周期,即乘以2倍)
指令周期:早期更多的是用来描述
某条指令执行
需要多少个机械周期,(如自增、自减为
1个机械周期,赋值
2个机械周期,判断
4个机械周期)。随着C语言的大量普及,现在,更多的人用它来代替
机械周期
这个名词,而
指令本身的
周期被人们所忽略,不再深讨了。
以上就是关于单片机IT1代码改用IT0全部的内容,包括:单片机IT1代码改用IT0、单片机OP I/T O/T分别表示什么意思、单片机实验 按钮触发外部中断 以下程序中为什么IT0和IT1为1即为什么是负跳变而不是低电平触发等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)