Notice. New forum software under development. It's going to miss a few functions and look a bit ugly for a while, but I'm working on it full time now as the old forum was too unstable. Couple days, all good. If you notice any issues, please contact me.
|
Forum Index : Microcontroller and PC projects : Programming in assembly language
Author | Message | ||||
Worm Newbie Joined: 30/06/2011 Location: New ZealandPosts: 38 |
Does anybody know of a good forum on progamming in assembly language? Trying to search for code snippets on the 12f617 is proving difficult. Any advice would be appeciated. Kevin There's no such thing as a free lunch. |
||||
ksdesigns Senior Member Joined: 25/06/2011 Location: United StatesPosts: 143 |
What do you need ?? ken |
||||
Worm Newbie Joined: 30/06/2011 Location: New ZealandPosts: 38 |
Hi Ken Ive written a program using a 10f206 and now want to transfer the program to a 12f617. The problem for me is I find it very difficult to understand the data sheets. I need to configure the 12f617 for 2 inputs and 3 outputs, and also how to turn on a O/P. If I had some code to blink a LED, I then could work out how to modify it untill I can get it to work with my own program. Kevin There's no such thing as a free lunch. |
||||
ksdesigns Senior Member Joined: 25/06/2011 Location: United StatesPosts: 143 |
http://www.voti.nl/swp/ is a good start any reason for the 12f671 ? 12f683 is a better part plus 256 bytes eeprom and probably cheaper . and if you need more speed 12f1822 is a great part. they are all the same 35 instructions to learn. The company i work for probably buys a few million of 683 and 1822's a year so i do a lot of stuff with them ken |
||||
Worm Newbie Joined: 30/06/2011 Location: New ZealandPosts: 38 |
Hi Ken The reason for using a 12f617 is I have 10 of them. Ive had a quick look at that web site you sugested. They have code to flash a LED but it is not in asm or for 12f617,s. The problem I am having is learning how to configure the more complex micros. Thats why I asked for code specific for a 12f617. Kevin There's no such thing as a free lunch. |
||||
Olimex Senior Member Joined: 02/10/2011 Location: BulgariaPosts: 226 |
www.piclist.com have nice archive |
||||
Bryan1 Guru Joined: 22/02/2006 Location: AustraliaPosts: 1344 |
Hi Kevin, For getting your feet wet in assembly language you can't go past Nigel Goodwin's pic Tutorials. Regards Bryan |
||||
vasi Guru Joined: 23/03/2007 Location: RomaniaPosts: 1697 |
You can use JALv2 language to blink a LED then, you can study the .asm file. You have support for that on Jallib libraries. It's all free. [code]include 12f617 -- target PICmicro -- -- This program assumes that a 20 MHz resonator or crystal -- is connected to pins OSC1 and OSC2. -- (unspecified configuration bits may cause a different frequency!) pragma target clock 20_000_000 -- oscillator frequency -- configuration memory settings (fuses) pragma target OSC HS -- HS crystal or resonator pragma target WDT disabled -- no watchdog pragma target MCLR external -- reset externally -- These configuration bit settings are only a selection, sufficient for -- this program, but other programs may need more or different settings. -- enable_digital_io() -- make all pins digital I/O -- -- Specify the pin to which the LED (with serial resistor!) is connected: alias led is pin_A0 pin_A0_direction = output -- forever loop led = on _usec_delay(250_000) led = off _usec_delay(250_000) end loop -- [/code] And the resulted assembler: [code]; compiler: jal 2.4o (compiled May 8 2011) ; command line: ../compiler/jalv2 -s ../lib 12f617_blink.jal list p=12f617, r=dec errorlevel -306 ; no page boundary warnings errorlevel -302 ; no bank 0 warnings errorlevel -202 ; no 'argument out of range' warnings __config 0x3ff2 datahi_set macro val bsf 3, 6 ; STATUS<rp1> endm datahi_clr macro val bcf 3, 6 ; STATUS<rp1> endm datalo_set macro val bsf 3, 5 ; STATUS<rp0> endm datalo_clr macro val bcf 3, 5 ; STATUS<rp0> endm irp_clr macro bcf 3, 7 ; STATUS<irp> endm irp_set macro bsf 3, 7 ; STATUS<irp> endm branchhi_set macro lbl nop endm branchhi_clr macro lbl nop endm branchlo_set macro lbl bsf 10, 3 ; PCLATH<3> endm branchlo_clr macro lbl bcf 10, 3 ; PCLATH<3> endm v_on EQU 1 v_off EQU 0 v_output EQU 0 v__gpio EQU 0x0005 ; _gpio v__porta_shadow EQU 0x0023 ; _porta_shadow v_cmcon0 EQU 0x001a ; cmcon0 v_cmcon1 EQU 0x001c ; cmcon1 v_adcon0 EQU 0x001f ; adcon0 v_trisio EQU 0x0085 ; trisio v_pin_a0_direction EQU 0x0085 ; pin_a0_direction-->trisio:0 v_ansel EQU 0x009f ; ansel v__pic_temp EQU 0x0020 ; _pic_temp-->_pic_state v__pic_state EQU 0x0020 ; _pic_state v___x_22 EQU 0x0023 ; x-->_porta_shadow:0 v___x_23 EQU 0x0023 ; x-->_porta_shadow:0 ; 25 include 12f617 -- target PICmicro org 0 l__main ; 38 enable_digital_io() -- make all pins digital I/O ; ../lib/12f617.jal ; 462 ANSEL = 0b0000_0000 -- all digital datalo_set v_ansel clrf v_ansel ; 12f617_blink.jal ; 38 enable_digital_io() -- make all pins digital I/O ; ../lib/12f617.jal ; 484 analog_off() ; 12f617_blink.jal ; 38 enable_digital_io() -- make all pins digital I/O ; ../lib/12f617.jal ; 469 ADCON0 = 0b0000_0000 -- disable ADC datalo_clr v_adcon0 clrf v_adcon0 ; 12f617_blink.jal ; 38 enable_digital_io() -- make all pins digital I/O ; ../lib/12f617.jal ; 485 adc_off() ; 12f617_blink.jal ; 38 enable_digital_io() -- make all pins digital I/O ; ../lib/12f617.jal ; 476 CMCON0 = 0b0000_0000 -- disable comparator clrf v_cmcon0 ; 477 CMCON1 = 0b0000_0000 clrf v_cmcon1 ; 12f617_blink.jal ; 38 enable_digital_io() -- make all pins digital I/O ; ../lib/12f617.jal ; 486 comparator_off() ; 12f617_blink.jal ; 38 enable_digital_io() -- make all pins digital I/O ; 42 pin_A0_direction = output datalo_set v_trisio ; pin_a0_direction bcf v_trisio, 0 ; pin_a0_direction ; 44 forever loop l__l46 ; 45 led = on datalo_clr v__porta_shadow ; x22 bsf v__porta_shadow, 0 ; x22 ; ../lib/12f617.jal ; 202 _PORTA = _PORTA_shadow movf v__porta_shadow,w movwf v__gpio ; 12f617_blink.jal ; 45 led = on ; 46 _usec_delay(250_000) datalo_clr v__pic_temp datahi_clr v__pic_temp movlw 167 movwf v__pic_temp l__l56 movlw 9 movwf v__pic_temp+1 l__l57 movlw 165 movwf v__pic_temp+2 l__l58 branchhi_clr l__l58 branchlo_clr l__l58 decfsz v__pic_temp+2,f goto l__l58 branchhi_clr l__l57 branchlo_clr l__l57 decfsz v__pic_temp+1,f goto l__l57 branchhi_clr l__l56 branchlo_clr l__l56 decfsz v__pic_temp,f goto l__l56 nop nop ; 47 led = off bcf v__porta_shadow, 0 ; x23 ; ../lib/12f617.jal ; 202 _PORTA = _PORTA_shadow movf v__porta_shadow,w movwf v__gpio ; 12f617_blink.jal ; 47 led = off ; 48 _usec_delay(250_000) datalo_clr v__pic_temp datahi_clr v__pic_temp movlw 167 movwf v__pic_temp l__l59 movlw 9 movwf v__pic_temp+1 l__l60 movlw 165 movwf v__pic_temp+2 l__l61 branchhi_clr l__l61 branchlo_clr l__l61 decfsz v__pic_temp+2,f goto l__l61 branchhi_clr l__l60 branchlo_clr l__l60 decfsz v__pic_temp+1,f goto l__l60 branchhi_clr l__l59 branchlo_clr l__l59 decfsz v__pic_temp,f goto l__l59 nop nop ; 49 end loop goto l__l46 end [/code] I don't know if it helps for your assembler but... you can get nice results in JALv2... The project page is here, Hobbit name: Togo Toadfoot of Frogmorton Elvish name: Mablung Miriel Beyound Arduino Lang |
||||
Print this page |