网站导航: 首页 > 设计参考 > 正文 文章搜索
74HC164驱动程序实例(C语言版子程序或汇编版子程序)
 
文章编号:
100816204211
文章分类: 电路 电子元件
点 击:
...
关 键 词: 74HC164
文章来源:
互联网
摘 要:
多个基于C语言版和汇编版的74HC164驱动程序实例...

 

实例1

 
  1. /****************************************************************  
  2.  
  3. 作用: 发送一个字节  
  4.  
  5. 入口参数: number   ;出口参数: 无  
  6.  
  7. 调用全局变量: 无  
  8.  
  9. 使用前需定义好clk_164 ,ab_164的管脚。  
  10.  
  11. *******************Transmit and Recive ********************/  
  12.   
  13. void Transmit164(unsigned char number)        // Transmit a byte;   
  14.          {unsigned char i="8";   
  15.           do{i--;   
  16.       CLK_164=0;   
  17.       AB_164=(bit)(number&0x80);   
  18.       number="number"<<1;   
  19.       CLK_164=1;   
  20.             }while(i!=0);   
  21.          }   
  22.   
  23.   /******************************************************/  
  24.   
  25. // 用74hc164发送一位。   
  26.   
  27.     void Transmit1Bit(unsigned char number)     // Transmit a bit from 74hs164   
  28.           {CLK_164=0;   
  29.            AB_164=(bit)(number&0x80);   
  30.            CLK_164=1;   
  31.           }   

实例2

 
  1. /**********************************************************/   
  2.   
  3. 下面是汇编写的程序,在pic16系列中编译通过。   
  4.   
  5. ;***************************************************************SUB_TRANSMIT发送子程序。  
  6. ;入口参数:W   
  7. ;出口参数:无  
  8. ;所用的参数:Transmit_cnta Transmittb  
  9. ;  扩展74LS164     LS164_CLK     LS164_AB  
  10. ;            #define  LS164_CLK  XX.X  
  11. ;            #define  LS164_AB   XX.X   
  12. ;*****************************************************************  
  13. SUB_TRANSMIT  BCF STATUS,RP1               ;BANK0  
  14.               BCF STATUS,RP0   
  15.                   
  16.              MOVWF Transmit_cnta     ;W--》COUNTA,左移一位---》RA2  
  17.                 
  18.              MOVLW D'8'   
  19.              MOVWF Transmittb   
  20.   
  21. AGA_LI1      RRF Transmit_cnta,1   
  22.              BTFSC STATUS,C        ;IF C="1" THEN RA2<---1   ELSE 0--->RA2         
  23.              GOTO SETBRA2   
  24.              BCF LS164_AB   
  25.              GOTO XIA_DISPLAY1   
  26. SETBRA2     BSF LS164_AB   
  27. XIA_DISPLAY1 NOP  
  28.              BSF LS164_CLK      
  29.              NOP  
  30.              BCF LS164_CLK       
  31.              NOP  
  32.              DECFSZ Transmittb,1   
  33.              GOTO  AGA_LI1   
  34.              CLRWDT   
  35.              RETURN           
  36. ;*************************************************************************  
  37.   

实例3

 
  1. #include "reg52.h"   
  2. #define uint unsigned int   
  3. #define uchar unsigned char   
  4. sbit DAT=P1^0;   
  5. sbit CLK=P1^1;   
  6. uchar code tab[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0xe7f,0xff,0x00};//0-9,-,全灭   
  7.   
  8. void sendbyte(uchar byte)   
  9. {       
  10.     uchar num,c;    
  11.     num=tab[byte];   
  12.     for(c=0;c<8;c++)   
  13.     {   
  14.         CLK=0;   
  15.         DAT=num&0x01;   
  16.         CLK=1;   
  17.         num>>=1;   
  18.            
  19.            
  20.     }   
  21.        
  22. }   
  23.   
  24.   
  25. void delay_50ms(unsigned int t)   
  26. {   
  27.     unsigned int j;      
  28.     for(;t>0;t--)    
  29.         for(j=6245;j>0;j--)    
  30.         {;}   
  31. }   
  32.   
  33. main()   
  34. {   
  35.        
  36.        
  37.     unsigned char h;   
  38.     while(1){   
  39.         for(h=0;h<10;h++){   
  40.             delay_50ms(1);   
  41.             sendbyte(h);   
  42.             delay_50ms(10);   
  43.         }   
  44.         h=0;   
  45.     }   
  46.        
  47. }   

实例4

 
  1. ;-------------------------------------------------------------  
  2. ;单片机驱动74LS164/74HC164的一个示例   
  3. ;74HC164是串入并出的数据移位模块,在其时钟端(CK)每送入一个时钟   
  4. ;脉冲,则其当前的数据线(DT)状态即被移位至输出端输出,164的数据   
  5. ;在时钟上升沿被锁存,输出由A向H依次移位   
  6.   
  7.   
  8. ;------------------------------------------------------------  
  9. ;送一个字节数据到164的过程   
  10. ;R0----要送出的数据/指令字节    
  11. ;-----------------------------------------------------------   
  12. SENDTO164:    
  13.         PUSH    R0    
  14.         PUSH    R1    
  15.         CLRBIT  CK_164   ;set clock line is low    
  16.         NOP    
  17.         NOP    
  18.         CLRBIT  DT_164   ;set data line is low    
  19.         LD      R1,#08H    
  20.   SENDA_164:    
  21.         RLC     R0              ;right shift R0,bit0 into C   
  22.         SETBIT  DT_164         ;set data line   
  23.         JR      C,SENDB_164         ;if C=1,skip   
  24.         CLRBIT  DT_164      ;clear data line   
  25.            
  26.   SENDB_164:    
  27.         NOP    
  28.         NOP     
  29.         SETBIT  CK_164      ;send one clock pulse   
  30.         NOP    
  31.         NOP    
  32.         NOP    
  33.         CLRBIT  CK_164       
  34.         DEC     R1    
  35.         JR      NZ,SENDA_164     
  36.             
  37. SEND164_BACK:    
  38.         POP     R1    
  39.         POP     R0    
  40.         RET     

 

 
相关文章:

 
最新开源项目
 
 
  查看更多...  
 
本站相关产品   淘宝网店
 




 
  查看更多...  

 

本站程序由百合电子工作室开发和维护
Copyright @ baihe electric studio
渝ICP备09006681号-4