标题: 初学单片机需要注意的一些问题 [打印本页]

作者: liuyang    时间: 2012-1-2 04:40
标题: 初学单片机需要注意的一些问题
                 最近学的东西整理下,也好便于自己再更深入的了解或系统的把握。

                  流水灯:

                            p1^6直接接74HC573的片选端上的,当它输出高电平,那么直接对P0口进行写入操作,74HC573会把相应的饿数据送到流水灯上,从而实现对流水灯的控制。

                        p1|=~(1<<6); p1&=(1<<6);

              英特尔总线:

                      很简单的,数据总线与地址总线的复用,通过设置WR与RD来进行锁存,先打开74HC573的片选端输入P2与P016位的地址总线,然后在进行锁存然后在打开片选端,晕死忘了,我看下时序图    写错了是先送数据然后锁存,在通过P0与P2 送出16位地址到+WR完成写入操作,读出就是反下。

                  蜂鸣器:

                       这个接在P0^3端口上的。当74HC138D的Y1口与WR输出低电平通过或非门打开74HC573的片选端应许写入操作,在P0^3上输出高电平,蜂鸣器就会发出响声。

                         P2=0x88(P2通过Y1可以推出A11、A15为1其他为0则P2=10001000B);p3&=~(1<<6);  打开片选端 P0=(1<<3);

          这个可以看作外设的IO口,刚看了下突然明白了,送出个0x8800地址再送出数据P0=(1<<3); 简单的写即:XBYTE[0x8800]=(1<<3);

          继电器:

                 类似蜂鸣器只是端口是P0^2。注意的是:原理图中可以看到必须把74HC537接地,即拨上蜂鸣器开关。

                 中断分查询中断与中断服务

                       查询中断是占CPU的因为代码是写在主函数中的,中断服务是不占的,只有产生中断的时候,程序才会进入到设定的中断服务程序中。没什么好写的,主要是写个循环不断的判断某个输出端是否置位。

                按键消抖,是通过延时10mS判断按键是否仍是存在然后用while(KEY_DOWN);按键释放时才做操作。

                      中断服务,这个稍微有点麻烦,ROM烧录好的不可更改的程序中存放着向量中断表,它指向了中断服务的入口函数的地址空间,当产生中断原时,程序自动会在表中相应的编号找到入口函数的地址,把 该地址送到指针寄存器中,然后程序就直接跳转进入到用户设定的中断服务程序中。

                      void cl() interrupt  编号  函数名随便起,我自写成自己的名字

                     假设开中断0  : 主函数中加入以下代码    EX0 =1;开中断0 IF=1 设置边降沿,EA=1;开全局中断

            定时器:

                   也2中方式,只是多了个对TMOD的操作来设置寄存器的位数等社者。

  一般模式:   查询:  TMOD=0x01; 设置16位的 假设开中断0 开始设置初直比如1ms  那么 TH0=(65535-24/12M*1ms)>>8;其中M和ms要换算的然后左移 获得高8位  TH0=(65535-20000)<<8; TL0=(65535-20000)&0xff; 然后开定时器TR=1;就可以了。然后不断判断TF==1益处手动清0赋初直。

                   中断服务: 多2部开定时中断EX0=1与全局中断EA=1;

                       本人遗留的问题:写了个定时器0与中断0的服务,用来接受按键来控制流水灯循环点亮的速度,发现中断0服务老是无法进入,换成中断1就可以。该问题目前仍未解决。

              数码管:

                     挺麻烦的,一般是扫描的方式通过视觉残留来显示数字的。数码管分共阴与共阳,共阳要加3机管实现的,通过输入高电平导通位片选端。具体写下来还真不好写,首先要测试出每个段 对应哪个输出端,然后再通过这个表来计算你要显示的数字的8位2机制数,然后在写个循环轮流选种位片选端把相应的数值输入。具体代码模式不写了,这个我自己知道就可以了。

               初步只学到这,花了我一个礼拜多的时间了,才开个头,后面的简单看了下简直不在一个层次上的,日的....  





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1